1

In my Rails Application, I have after_update callback. But this callback is executed when my record is first time created using save method and when it is updated using update_attributes.

So I want a way using which the callback/method must be called when it is coming to update method but currently it is getting executing when it is coming to create as well as update method.

I think update_attribute also call internally a save method, because of this issue is coming.

So is there any way using which I can call my hook when record is updated and not saved.

I found one way using attr_accessors but I wanted some other way as maintaining these flags will be very difficult for my app

user1265795
  • 11
  • 1
  • 2

2 Answers2

1

How about this

after_update do |model| 
  model.name = model.name.capitalize unless model.new_record?
end
rajibchowdhury
  • 5,264
  • 2
  • 14
  • 7
0

after_update only gets called after a update of the model. For it to get called when a model is created, you must update its attributes after .save is called on the model. .update_attribute and .update_attributes is not the create of a model, it is actually updating the model. .update_attribute calls the .save method internally. .save is called to save the state of the model, new or updated. When you call it, ActiveRecord writes the new state to the database. When a model is created or updated, it is always done trough the .save method

Ben
  • 13,297
  • 4
  • 47
  • 68