如何在sidekiq事务完成之前提交db?

时间:2017-08-02 07:38:44

标签: ruby-on-rails ruby-on-rails-4 sidekiq

我正在尝试在作业中迭代更新表行。以下是代码示例

class UpdateTableJob < ApplicationJob

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

end

假设我有100个用户,并且只有在100个用户的迭代完成后,我才能看到更改被提交给db。但是我怎样才能在每次更新时都做到这一点?

1 个答案:

答案 0 :(得分:1)

明确创建一个事务,以便控制边界。

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