问题
I have two columns related to each other in a Rails model:
Article.body
Article.body_updated_on
I want to change the Article.body_updated_on to Time.now, every time Article.body is updated. If any other fields updated nothing needs to be happen.
回答1:
Just add before save callback to your Article model
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
回答2:
You can either override the default setter for body, or better yet, use a callback to set it just before update. You could choose from several options: before_save, before_update ... depending on exactly when you want it.
before_save do |article|
article.body_updated_on = Time.now if article.body_changed?
end
来源:https://stackoverflow.com/questions/12397776/ruby-on-rails-change-column-value-on-update-of-other-column-value