geekdeepak
geekdeepak

Reputation: 1175

Ruby on rails, Change column value on update of other column value

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.

Upvotes: 6

Views: 4959

Answers (2)

DGM
DGM

Reputation: 26979

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

Upvotes: 1

Nick Kugaevsky
Nick Kugaevsky

Reputation: 2945

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

Upvotes: 20

Related Questions