Обратные вызовы Rails Active Record

Я пытался выяснить, когда именно каждый обратный вызов для активной записи вызывается в рельсах.

Моя конкретная проблема: никогда не вызывается функция before_save. Например, если вы делаете create.

Более широкий подход заключается в том, когда и где вызывается каждый из них. Также скажите, что вы изменяете существующий объект в обратном вызове, который вам нужно будет повторно сохранить, и можете ли вы принудительно сохранить внутри обратного вызова, будет ли это сохранение вызывать save_callbacks... Вы видите, к чему я иду.


person austinbv    schedule 30.08.2011    source источник


Ответы (2)


Я не совсем уверен, что вы имеете в виду, но если вы хотите изменить что-то внутри обратного вызова, что требует сохранения, сделайте это в обратном вызове before_save и не сохраняйте явно, так как вы знаете, что элемент будет сохранен дальше все равно.

В after_save вам лучше ничего не менять и сохранять, так как это действительно вызовет обратные вызовы снова и приведет к бесконечному циклу.

Однако можно объявить обратные вызовы условно, и это также может решить вашу проблему:

before_save :do_something, :unless => some_condition 

Дополнительные примеры можно найти здесь.

В любом случае, если это все еще неясно или не совсем подходит для вашего случая: проще обсудить это, если вы приведете более практический пример.

person nathanvda    schedule 30.08.2011

Ваш вопрос немного неясен, возможно, http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html может помочь

person lucapette    schedule 30.08.2011