在事务中提交单个更新

时间:2013-02-07 16:20:16

标签: ruby-on-rails transactions commit

我需要一些帮助...

这是一种Rails 3.0.15伪代码来解释我的问题:

progress_bar = ProgressBar.create

record = Record.new
10000.times.do
  record.bodies.build
  progress_bar.inc
end
record.save

代码创建了10000个记录体,但是它们被包装在一个事务中,因此它们会立即被提交,这很好。

ProgressBar.create表中的记录,inc应该递增一个计数器,因此js进度条可以从表中读取当前计数并更新进度,但由inc触发的ProgressBar更新被捕获在记录交易,并用10000条记录提交......没用!

如何在不提交整个事务的情况下强制更新事务中的任何想法?

或者我可以使用哪种替代存储来保存进度条当前位置?

此致

1 个答案:

答案 0 :(得分:0)

Realtional数据库通常无法在事务内部进行写入,因此您的选择是以某种方式发送消息,以便另一个数据库连接将处理进度条,或者(这会更容易,更好,imo)存储您的进度将数据添加到Redis或Memcached等其他内容中;它们专为此用途而设计。