1
У меня есть следующая модель. Должен ли я включать все имена полей в листинг или есть ли способ по умолчанию для сопоставления всех полей в параметрах для модели.литье/3 в Elixir Ecto изменения
defmodule Chemical.Info do
use Chemical.Web, :model
schema "infos" do
field :title, :string
field :shortdesc, :string
field :longdesc, :string
field :images, :string
field :regions, :string
field :startdate, :date
field :enddate, :date
field :status, :string
field :createdby, :string
field :approvedby, :string
timestamps()
end
def changeset(model, params \\ :empty) do
model
|> cast(params, ["title", "shortdesc", "longdesc"])
end
end
Должен ли я указывать все имена полей в методе литья, которые нужно скопировать в модель?
Он должен работать для всех не-виртуальных полей. – PatNowak
Я заменил это |> cast (params, ["title", "shortdesc", "longdesc"]) с этим |> cast (params, Enum.map (@ecto_fields, & (elem (& 1, 0)))) и это сработало. благодаря –