Rails 3.1.3 アプリで 2 つのテーブルに保存するために、out_logs コントローラーに次のコードがあります。2 つの節約が完了またはなしで行われることを確認するために、トランザクションが使用されます。
@out_log.transaction do
if @out_log.save && @part.save
redirect_to part_path(@part), :notice => "Saved!"
else
flash.now[:error] = "Not saved!"
render 'new'
end
end
コードは機能しているようです。私たちの質問は次のとおりです。
- 上記のコードはトランザクションの良い方法ですか?
- トランザクション ループには、redirect_to と render があります。これらの redirect_to または render は、トランザクション ループの実行時間を増やし、データベース (sqlite3 を使用) を長時間ロックしますか?
本当にありがとう。