`after_commit` em ActiveRecord :: Observer

after_commit método em ActiveRecord :: Base pode ter algumas opções condicionais, que ActiveRecord :: Observer não pode ter

class User < ActiveRecord::Base
after_commit
:do_something, on: :create
def do_something
# ...
end
end

para mover esse retorno de chamada para o Observer, você deve usar o método transaction_include_action?.

class UserObserver < ActiveRecord::Observer
def after_commit(user)
if user.send(:transaction_include_action?, :create)
# ...
end
end
end

Nota: você deve chamar o método com send, porque é protegido