默认日期在Rails中不使用系统时间



我有一个模型用户的迁移,上面写着

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

相关内容

  • 没有找到相关文章

最新更新