2010-10-22 2 views
2

В некоторых случаях я не хочу выполнять before_update. пожалуйста помогите.игнорировать before_update при сохранении

случай А: в случае, если я хочу подержанные before_update

obj = Object.find(id) 
obj.save 

но случай B Я не хочу использоваться before_update

obj = Object.find(id) 
obj.save # in case I want used before_update 

ответ

0

update_without_callbacks и create_without_callbacks частные методы. Эти методы не будут вызывать никаких обратных вызовов.

obj = Object.find(id) 
obj.send(:update_without_callbacks) 

obj = Object.new(:name => 'foo') 
obj.send(:create_without_callbacks) 
+0

большой. спасибо – khanh

+1

Не делайте этого! Есть причина, почему эти методы являются частными. Вы никогда не должны полагаться на внутренний API, или ваше приложение не будет работать в случае внутреннего рефакторинга. –

+0

Работает только в Rails 2. Проверьте это [ответ] (http://stackoverflow.com/questions/1342761/how-to-skip-activerecord-callbacks) – Shadoath

3

Метод #save принимает Хэш опции. Пропустить проверки:

obj.save(:validate => false) 

Это документированный способ пропустить проверки с использованием общедоступного API. Не пытайтесь использовать отправку для вызова внутренних методов или ваше приложение может не работать в будущем.