2013-02-07 141 views
0

我需要一些帮助,里面...提交一个更新,交易

这是一种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一个表中的记录,公司应该增加一个计数器,因此一个js进度条可以从表中读取当前计数并更新进度,但由inc触发的ProgressBar更新会被捕获记录交易,并承诺与10000条记录......没用!

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

或者我可以使用什么样的替代存储来保存进度栏当前位置?

问候

回答

0

Realtional数据库通常无法做到写,而在事务内,所以你的选择是,以某种方式发送了消息,所以另一个数据库连接将处理进度条,或(这是一个极大的方便,更好的,imo)将你的进度条数据存储到其他类似Redis或Memcached的其他数据中;它们是为这种用法而设计的。

+0

已解决。您的解决方案让我以正确的方式。我去PStore创建一个外部存储库。 – SkyLord73

+0

尽快我会发布我的新宝石来解决轨道上的状态栏问题...敬请期待! – SkyLord73