2016-01-02 8 views
11

エクトの理由changesetメソッドは、パラメータをデフォルトの:empty原子に設定しますか?例えばエクトチェンジセットの空の原子

def changeset(user, params \\ :empty) do 
    ... 

これにより、パラメータセットにnilを指定してチェンジセットメソッドを呼び出すことができますか?

答えて

15

これはプログラミングフェニックスで説明されています。

クリスは言う:指定されたパラメータがない場合はそれが空白のフォームの送信と区別がつかないことになるので、私達はちょうど空のマップをデフォルトにすることはできません。代わりに、デフォルトのparamsをatom:emptyに設定します。慣例として、Ectoは空のパラメータを持つ無効なチェンジセットを生成します。

したがって:emptyはプレースホルダとして使用されるため、空白のフォームの送信とパラメータの指定は区別できません。以下のコメントで


Stefanとしてノート:エクト2.0で、それは空のマップを使用していることを

注:エクト2.0で、それは空のマップを使用していることをdef changeset(user, params \\ %{}) do

+6

注: ' defチェンジセット(ユーザ、params \\%{})do'。 https://hexdocs.pm/ecto/2.0.2/Ecto.Changeset.html – Stefan

+0

を参照してください。それは、人々がそれを見逃している場合に備えて、その答えに際立っています。ありがとう:) –

+1

Ecto 2.0が空のマップをデフォルトにできる理由は何ですか? – Johannes

関連する問題