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