【发布时间】:2015-02-13 18:48:28
【问题描述】:
我今天刚开始使用 Elixir & Phoenix,我正在尝试将 Ecto 添加为映射器,但我在使用时间时遇到了一些问题。
这是我的模型。
schema "users" do
field :name, :string
field :email, :string
field :created_at, :datetime, default: Ecto.DateTime.local
field :updated_at, :datetime, default: Ecto.DateTime.local
end
我正在尝试按默认设置 created_at 和 updated_at,但是当我尝试编译它时,我收到以下错误。
== Compilation error on file web/models/user.ex ==
** (ArgumentError) invalid default argument `%Ecto.DateTime{day: 13, hour: 19, min: 47, month: 2, sec: 12, year: 2015}` for `:datetime`
lib/ecto/schema.ex:687: Ecto.Schema.check_default!/2
lib/ecto/schema.ex:522: Ecto.Schema.__field__/4
web/models/board.ex:9: (module)
(stdlib) erl_eval.erl:657: :erl_eval.do_apply/6
在文档中没有太多帮助,正确的方法是什么?
【问题讨论】:
-
请注意,
default: Ecto.DateTime.local将在编译时扩展,这不是您想要的。正如@whatyouhide 所说,请改用Ecto.Schema.timestamps/1。 -
我将如何以及在何处指定使用 Ecto.Schema.timestamps/1?我想我不会把它说成一个字段,因为它会自己创建字段?
-
@whatyouhide 再次感谢!我欠你一个拥抱:-)
标签: postgresql elixir ecto