我们在 out_logs 控制器中有以下代码,用于保存到 rails 3.1.3 应用程序的两个表中。为了确保这两个节省是在完成或没有完成的情况下完成的,使用了一个事务。
@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)锁定时间过长?
非常感谢。