cast/3 在 Elixir Ecto 变更集中

cast/3 in Elixir Ecto changesets

我有以下型号。我是否必须在转换中包含所有字段名称,或者是否有任何默认方法将参数中的所有字段映射到模型。

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

是否必须在要复制到模型中的 cast 方法中指定所有字段名称?

我认为这可能有用,但我从来没有做过 ->

Enum.map(@ecto_fields, &(elem(&1, 0)))