在Ecto中,您可以通过指定field :name, default: "john"
来为fields in your Schema提供默认值。在文档中,声明此默认值存储在编译时,Date.now
或UUID.generate
之类的内容不起作用。
我的问题是:我们如何创建这些变量默认值?
可以说'只需在创建结构后设置值'即可。但是,在使用虚拟字段时,不可能。当你使用e。 G。 Repo.all(MyModel)
或任何其他查询命令,虚拟字段设置为其默认固定值。
我们如何创建变量架构字段默认值?
答案 0 :(得分:4)
这是不可能的。 Ecto只是定义了一个结构,Elixir结构在编译时被扩展。
你可以通过明确地使用函数生成具有默认值的结构来解决这个问题,或者通过put_change
和类似的方法在变更集函数中执行此操作。