6

Railsモデルには互いに関連する2つの列があります。

Article.body
Article.body_updated_on

Article.body_updated_onに変更したいのですが、更新するTime.nowたびに。Article.body他のフィールドが更新された場合、何もする必要はありません。

4

2 に答える 2

20

コールバックを保存する前にArticleモデルに追加するだけです

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
于 2012-09-13T01:08:25.730 に答える
1

bodyのデフォルトのセッターをオーバーライドするか、さらに良いことに、更新の直前にコールバックを使用して設定することができます。必要なタイミングに応じて、before_save、before_update...などのいくつかのオプションから選択できます。

 before_save do |article|
   article.body_updated_on = Time.now if article.body_changed?
 end
于 2012-09-13T00:52:49.580 に答える