我有一个Rails 4应用程序并且正在使用事务性装置,并希望在运行我的集成规范时触发我的after_commit挂钩。
当然,当你使用事务性工具时,实际上没有提交,所以在Rails 3中有这个补丁:https://gist.github.com/charleseff/1305285,它被制成一个gem:'test_after_commit'
Rails 4已经足够改变了active_record的内部,因此无法移植Rails 3补丁。
有人在Rails 4中解决了这个问题吗?
答案 0 :(得分:3)
我通过在spec / support / helpers / test_after_commit.rb中添加以下代码来解决这个问题
require 'active_record/connection_adapters/abstract/transaction'
module ActiveRecord
module ConnectionAdapters
class SavepointTransaction < OpenTransaction
def perform_commit_with_transactional_fixtures
commit_records if number == 1
perform_commit_without_transactional_fixtures
end
alias_method_chain :perform_commit, :transactional_fixtures
end
end
end