我想要做這樣的事情:您可以手動管理事務提交/回滾嗎?
["START", "a", "b", "c", "STOP", "START", "d", "e", "STOP"].each do |message|
if message == "START"
Transaction.begin
elsif message == "STOP"
Transaction.commit if Transaction.active?
else
begin
Message.create!(body: message)
rescue
Transaction.rollback
end
end
end
總之,我有「消息」的流,我想transactionalise該流的部分。
每當「START」出現在流,一個新的事務開始。每當出現「停止」時,交易都會被提交。
我正在努力與交易。
我可以看到我能做的ActiveRecord :: Base.transaction做...結束,但不會在這種情況下工作,除非我批了一切,在這裏是因爲流不可能的。
我看到有一個埋在ActiveRecord中的事務管理器,我可能會使用(https://github.com/rails/rails/blob/0d76ab9c6f01e6390ba8878a296ff9d3ac6b9aa8/activerecord/lib/active_record/connection_adapters/abstract/transaction.rb),但是我還沒有能夠讓我的測試通過它。
我認爲問題的一部分,也是RSpec中的事務夾具干涉,但禁用這些似乎並沒有任何解決的問題。
任何幫助,將不勝感激。
感謝
您能否給一些更多的數據?你在掙扎什麼?也許顯示規格失敗。 –