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