为什么在Ecto changeset
方法中将参数设置为默认的:empty
原子? e.g。
def changeset(user, params \\ :empty) do
...
这是否允许您使用nil为变量调用变更集方法?
答案 0 :(得分:18)
这在Phoenix编程中有解释:
Chris说:如果没有指定参数,我们不能只默认为空地图,因为这与空白表单提交无法区分。相反,我们默认params到原子:空。按照惯例,Ecto将生成一个无效的变更集,其中包含空参数。
因此:empty
用作占位符,以便我们可以区分空白表单提交和未指定参数。
如以下评论中的Stefan注释:
请注意,使用Ecto 2.0时,它使用空地图:
def changeset(user, params \\ %{}) do