1

我需要帮助...

这是一种 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 a record in a table,inc应该增加一个counter,所以js进度条可以从table中读取当前count并更新进度,但是由inc触发的ProgressBar更新被困在Record事务里面,并承诺 10000 条记录......没用!

关于如何在事务中强制更新而不提交整个事务的任何想法?

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

问候

4

1 回答 1

1

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

于 2013-02-07T17:13:15.950 回答