У меня есть некоторые модели, которые имеют after_save обратные вызовы. Обычно это нормально, но в некоторых ситуациях, например при создании данных разработки, я хочу сохранить модели без выполнения обратных вызовов. Есть ли простой способ сделать это? Что-то похожее на ...Как избежать обратных вызовов ActiveRecord?
Person#save(:run_callbacks => false)
или
Person#save_without_callbacks
Я посмотрел в документации Rails и ничего не нашли. Однако, по моему опыту, Rails-документы не всегда рассказывают всю историю.
UPDATE
Я нашел a blog post, что объясняет, как можно удалить обратные вызовы из модели, как это:
Foo.after_save.clear
Я не мог найти, где документально подтверждено, что метод, но это, кажется, работает.
Если вы делаете что-то деструктивное или дорогие (например, отправка сообщений электронной почты) в функции обратного вызова я рекомендую движущемся это выход и запуск его отдельно от контроллера или в другом месте. Таким образом, вы не будете «случайно» запускать его в процессе разработки и т. Д. – ryanb
Решение, которое вы приняли, не работает для меня. Я использую rails 3. Я получаю ошибку, подобную этой: - undefined method 'update_without_callbacks 'для # <Пользователь: 0x10ae9b848> –
yaa, что сообщение в блоге работало .... –