如何使用ActiveRecord将列的默认值设置为当前时间?

时间:2011-09-21 04:24:33

标签: ruby-on-rails

我在MYSQL中有一个名为“date_added”的字段。我希望它具有值Time.now.to_i作为其默认值(换句话说,添加记录的时间)。我知道在ActiveRecord中免费添加了一个类似的列,但是忽略了......我该如何添加这个默认值?

:默认=> ???

1 个答案:

答案 0 :(得分:3)

您可以使用before_create

class SomeModel < ActiveRecord::Base
  before_create :set_date_added

  protected

  def set_date_added
     self.date_added = Time.now.to_i
  end
end

这是在第一次保存对象之前调用的,完全符合您想要的条件。

或者,您可以使用hack将默认的activerecord created_at重命名为date_added,方法是按照以下答案进行操作:Renaming the created_at, updated_at columns of ActiveRecord/Rails 有关回调的详细信息,请参阅http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html