在Ecto变更集中的空原子

时间:2016-01-02 21:15:44

标签: elixir ecto

为什么在Ecto changeset方法中将参数设置为默认的:empty原子? e.g。

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

这是否允许您使用nil为变量调用变更集方法?

1 个答案:

答案 0 :(得分:18)

这在Phoenix编程中有解释:

  

Chris说:如果没有指定参数,我们不能只默认为空地图,因为这与空白表单提交无法区分。相反,我们默认params到原子:空。按照惯例,Ecto将生成一个无效的变更集,其中包含空参数。

因此:empty用作占位符,以便我们可以区分空白表单提交和未指定参数。

如以下评论中的Stefan注释:

  

请注意,使用Ecto 2.0时,它使用空地图:def changeset(user, params \\ %{}) do