Finally, schemas can also have virtual fields by passing the virtual: true option. These fields are not persisted to the database and can optionally not be type checked by declaring type :any.
virtual: true
オプションを渡すことで、スキーマに仮想フィールドを含めることができます。
DBに保存する必要はないが、構造体としてフィールドがあってほしいときに使ったりします。
DBの変更はしないのでマイグレーションの必要はありません。
defmodule NaiveTree.Categories.Category do
use Ecto.Schema
import Ecto.Changeset
schema "categories" do
field :name, :string
field :parent_id, :id
field :depth, :integer, virtual: true
field :serial_number, :string, virtual: true # <- これ
timestamps()
end
@doc false
def changeset(category, attrs) do
category
|> cast(attrs, [:name])
|> validate_required([:name])
end
end