2
在表单提交后,我需要做一些处理,最终将多个记录保存在多个表中。因为我需要它全部或全无,所以我将它包装在一个事务块中。该块似乎工作得很好,但我不知道如何检查交易是否成功,以便我可以返回适当的响应。检查多插入事务是否成功
...
# Start a transaction block so we can back out if anything fails
ActiveRecord::Base.transaction do
# Journal Entry for from_account
gle = from_account.gl_journal_entries.create(....)
# Journal Line (x2)
gle.gl_journal_lines.create(....)
gle.gl_journal_lines.create(....)
# Journal Entry for to_account
gle = to_account.gl_journal_entries.create(....)
# Journal Line (x2)
gle.gl_journal_lines.create(....)
gle.gl_journal_lines.create(....)
end
# return something based on success/failure of transaction
...
请注意,ActiveRecord :: Rollback异常不会在块外引发。但其他例外情况。所以也许用'create!' –
PhilipHallstrom是正确的,编辑来反映。 – kddeisz
这工作很好。感谢你们两位! –