Ecto:如何在架构中定义变量默认字段值?

时间:2016-05-28 14:40:36

标签: elixir

在Ecto中,您可以通过指定field :name, default: "john"来为fields in your Schema提供默认值。在文档中,声明此默认值存储在编译时,Date.nowUUID.generate之类的内容不起作用。

我的问题是:我们如何创建这些变量默认值? 可以说'只需在创建结构后设置值'即可。但是,在使用虚拟字段时,可能。当你使用e。 G。 Repo.all(MyModel)或任何其他查询命令,虚拟字段设置为其默认固定值。

我们如何创建变量架构字段默认值?

1 个答案:

答案 0 :(得分:4)

这是不可能的。 Ecto只是定义了一个结构,Elixir结构在编译时被扩展。

你可以通过明确地使用函数生成具有默认值的结构来解决这个问题,或者通过put_change和类似的方法在变更集函数中执行此操作。