2017-02-01 1 views
1

以下のモデルがあります。キャスト内にすべてのフィールド名を含める必要がありますか、パラメータのすべてのフィールドをモデルにマップするデフォルトの方法がありますか。キャスト/ 3エリクールエクトチェンジセット

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 

キャストメソッドのすべてのフィールド名をモデルにコピーする必要がありますか?

答えて

1

私はこれが機能かもしれないと思うが、私はTBHそれをやったことがない - >

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

これは、すべての非仮想フィールドのために働く必要があります。 – PatNowak

+0

この|>キャスト(params、Enum.map(@ecto_fields、&(elem(&1、0)))でこの|>キャスト(params、["title"、 "shortdesc"、 "longdesc"])それは働いた。ありがとう –

関連する問題