views:

36

answers:

2

some case I don't want execute before_update. please help me.

case A: in case I want used before_update

obj = Object.find(id)
obj.save

but case B I don't want used before_update

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

update_without_callbacks and create_without_callbacks are private methods. These methods will not call any callbacks.

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

obj = Object.new(:name => 'foo')
obj.send(:create_without_callbacks)
krunal shah
great. thanks you
Nam Khanh
Don't do this! There is a reason why these methods are private. You should never rely on internal API or your application won't work in case of internal refactoring.
Simone Carletti
A: 

The method #save accepts a Hash of option. To skip validations:

obj.save(:validate => false)

This is the documented way to skip validations using the public API. Don't try to use send to call internal methods or your application might not work in the future.

Simone Carletti