модель "One"Как избежать двойного сохранения модели ActiveRecord?
class One < ActiveRecord::Base
before_save :do_stuff
private
def do_stuff
two = Two.find(8)
two.field2 = 'Value'
two.save!
end
end
Модель "Два"
class Two < ActiveRecord::Base
before_save :do_stuff
private
def do_stuff
one = One.find(7)
one.field2 = 'SomeValue'
one.save!
end
end
Выполнение:
two = Two.find(1)
two.somefield = 'NewVal'
two.save!
Бесконечный цикл начнется. Что будет с Ruby-on-rails для реализации двух моделей, которые должны изменить друг друга на обратном вызове before_save?
Что именно вы пытаетесь достичь здесь? –
Несомненно, у вас возникли проблемы с дизайном, даже если вы решите текущий вопрос, это приведет вас к следующей проблеме: – megas
+1, даже если это выглядит как недостаток в дизайне, я нашел себя более одного раза в этом _cycle ссылка обратного вызова hell_. Может быть полезно иметь возможность [Избегать обратных вызовов adhoc] (http://stackoverflow.com/questions/632742/how-can-i-avoid-running-activerecord-callbacks) – fguillen