Method: ActiveRecord::Transactions::ClassMethods#after_commit

Defined in:
lib/active_record/transactions.rb

#after_commit(*args, &block) ⇒ Object

This callback is called after a record has been created, updated, or destroyed.

You can specify that the callback should only be fired by a certain action with the :on option:

after_commit :do_foo, :on => :create
after_commit :do_bar, :on => :update
after_commit :do_baz, :on => :destroy

Also, to have the callback fired on create and update, but not on destroy:

after_commit :do_zoo, :if => :persisted?

Note that transactional fixtures do not play well with this feature. Please use the test_after_commit gem to have these hooks fired in tests.



226
227
228
229
230
231
232
233
# File 'lib/active_record/transactions.rb', line 226

def after_commit(*args, &block)
  options = args.last
  if options.is_a?(Hash) && options[:on]
    options[:if] = Array.wrap(options[:if])
    options[:if] << "transaction_include_action?(:#{options[:on]})"
  end
  set_callback(:commit, :after, *args, &block)
end