Domanda

In a particular class that extends ActiveRecord::Base, I need to update a different ActiveRecord object whenever this one is created. Is it safe to override the save method and do the following in the save?

def save
  super
  other = self.other
  other.name = self.name
  other.save!
end

I'm worried about potential transaction related issues. I assume this would all be 1 transaction, if any part fails, everything is rolled back?

È stato utile?

Soluzione

Is there a particular reason why you wouldn't use the hooks provided for this purpose?

You've got after_create, after_save, after_update, before_create, before_save, before_update - and a bunch of others. Wouldn't one of those be suitable?

In fact, given what you've said, it sounds like before_save is what you want, as you can catch any errors that occur whilst saving the second model and prevent the first one from being saved (by returning false from the before_save call).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top