如何解决rails sql发送多个限制删除查询
我正在尝试使用delay_jobs从我的数据库中删除数千条记录。现在它删除了查询,但是我在日志中看到一个无限循环,它不断查询数据库中的记录以删除它们,即使没有记录也是如此。
我在self.get_all_calls
下的代码是一次遍历并破坏5000条记录的地方,我想睡2 seconds
,然后再做5000条,直到全部删除。
有没有办法只做一次Calls.where(account_name: y).limit(5000).destroy_all
并立即做5000条记录,然后睡觉,一次又一次地做直到完成,而不是像下面那样做。在下面修复我的代码以停止无限循环?
def destroy_calls
y = self.name
counts = Call.where(account_name: self.name)
count = counts.count
User.delay(run_at: 2.minutes.from_now).get_all_calls(y,count)
end
def self.get_all_calls(y,count)
until count == 0
Call.where(account_name: y).limit(5000).each do |x|
x.destroy
count-1
end
sleep(2)
end
end
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。