如果我制作模型并创建一个像“名称”这样的字段以及一个Timestamp
,它将等同于通过查询手动创建的时间戳:
CREATE TABLE whatever (
name varchar(25)
created timestamp NULL DEFAULT CURRENT_TIMESTAMP
)
换句话说,如果我要处理的数据库具有手动创建的时间戳,该如何创建一个模型来匹配预先存在的记录?
我想这很重要,这样我就可以对ActiveRecord查询进行任何操作。
ActiveRecord会理解timestamp
模式的一部分,因此您应该ActiveSupport::TimeWithZone
像从其他任何timestamp
列中一样走出数据库。但是,AR无法理解,default current_timestamp
因此它将把您的created
列设置为NULL
(或nil
在Ruby领域),并且default current_timestamp
将永远不会触发该列。我通常用after_initialize
钩子解决这个问题:
after_initialize :set_defaults, :if => :new_record?
#...
def set_defaults
self.created = Time.now
end
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句