Ruby on rails,更新其他列值时更改列值

时间:2012-09-13 00:18:22

标签: ruby-on-rails ruby activerecord

我在Rails模型中有两个相互关联的列:

Article.body
Article.body_updated_on

每次Article.body_updated_on更新时,我都希望将Time.now更改为Article.body。如果任何其他字段更新,则无需进行任何操作。

2 个答案:

答案 0 :(得分:17)

只需在保存回调到文章模型之前添加

class Article < ActiveRecord:Base

  before_save :update_body_modified

private       # <--- at bottom of model

  def update_body_modified
    self.body_updated_on = Time.now if body_changed?
  end
end

答案 1 :(得分:1)

您可以覆盖body的默认setter,或者更好的是,在更新之前使用callback进行设置。你可以选择几个选项:before_save,before_update ......具体取决于你想要的时间。

 before_save do |article|
   article.body_updated_on = Time.now if article.body_changed?
 end