如何在sidekiq事务完成之前提交数据库?

问题描述:

我正在尝试更新作业内迭代的表格行。下面是代码示例如何在sidekiq事务完成之前提交数据库?

class UpdateTableJob < ApplicationJob 

    def perform(arg1, arg2) 
    User.each do |person| 
     person.update_attributes(:name => "test") 
     sleep 25 
    end 
    end 

end 

说我有100个用户和100用户的迭代完成后才能,我看得出来,改变被提交到数据库。但是我怎样才能在每次更新中实现这一点?

+0

1.您确定'perform'正在处理事务吗? –

+0

2.在您的示例中不使用交易是错误的方法 –

+0

在第二条评论中,您是否说交易是强制性的。正如我在更新用户之后尝试从数据库获取值时所说的那样,我无法找到更新,但只有在作业完成后才会更新。但是,当我尝试在更新后强行提交数据库时,我能够看到数据库中的更改。 – logesh

显式创建事务,以便控制边界。

class UpdateTableJob < ApplicationJob 

    def perform(arg1, arg2) 
    User.each do |person| 
     User.transaction do 
     person.update_attributes(:name => "test") 
     sleep 25 
     end 
    end 
    end 
end