Railsモデルには互いに関連する2つの列があります。
Article.body
Article.body_updated_on
Article.body_updated_on
に変更したいのですが、更新するTime.now
たびに。Article.body
他のフィールドが更新された場合、何もする必要はありません。
Railsモデルには互いに関連する2つの列があります。
Article.body
Article.body_updated_on
Article.body_updated_on
に変更したいのですが、更新するTime.now
たびに。Article.body
他のフィールドが更新された場合、何もする必要はありません。
コールバックを保存する前に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
bodyのデフォルトのセッターをオーバーライドするか、さらに良いことに、更新の直前にコールバックを使用して設定することができます。必要なタイミングに応じて、before_save、before_update...などのいくつかのオプションから選択できます。
before_save do |article|
article.body_updated_on = Time.now if article.body_changed?
end