我有一个模型用户的迁移,上面写着
add_column :users, :performed_something, :date, :default => Date.today (also tried Time.now.getlocal)
点击控制台显示
Time.now.getlocal
=> 2014-03-11 07:42:51 -0700 (which is correct)
但是这样做
u = User.new
puts u.performed_something
=> Mon, 10 Mar 2014
似乎给了我之前的日期,而实际上他们正在调用相同类型的方法。我也检查了系统日期,它说PDT,但我不确定这是否是问题所在。
它一次又一次地返回相同的日期,因为Date.today
只求值一次。要解决这个问题,将默认值放在User模型中,类似于:
after_initialize :set_defaults
def set_defaults
if new_record?
self.performed_something ||= Date.today
end
end
这将设置performed_something
属性,如果它的值仍然是nil
。