似乎 DataMapper 中的验证在 dm-timestamps 有机会自动设置 created_at 和 updated_at 字段之前运行。
考虑以下:
require 'dm-core'
require 'dm-migrations'
require 'dm-timestamps'
require 'dm-validations'
class MyResource
include DataMapper::Resource
property :mykey, Serial, :key=>true
property :created_at, DateTime, :required=>true
property :updated_at, DateTime
end
resource = MyResource.new
resource.save #fails
保存失败,因为 created_at 为空白。有趣的是,如果您只是注释掉“需要 dm-validations”,问题就会消失。当然,您也可以从 :created_at 中删除 ":required=>true" ,但这不是我想要的 - created_at 是必需的。只是我正在使用 dm-timestamps 自动为我设置它。
还有人看到这个吗?有解决办法吗?