1

有人能准确地告诉我如何整合acts_as_paranoidDelayedJob?我尝试创建一个类Delayed::Backend::ActiveRecord::Job并添加acts_as_paranoid到它,但即使我使用初始化程序和require新类,acts_as_paranoid 似乎也没有做任何事情。

我没有收到任何错误,因此paranoia似乎已正确安装,并且在成功完成后会干净地删除该作业-这当然是我要防止的。

如果没有人读到这篇文章并立即知道我是怎么搞砸的,那么很高兴尝试任何调试建议。

4

2 回答 2

0

原来我陷入了“默认范围”问题。 acts_as_paranoid更改默认范围,以便 afind仅返回尚未软删除的条目。如果您想查看所有条目,包括软删除的条目,您需要添加with_deleted作为查询的范围,或者在添加acts_as_paranoid到您的类时,按照示例添加:

class Client < ActiveRecord::Base
  acts_as_paranoid without_default_scope: true

  ...
end

通过这些更改中的任何一个,一切都在发挥作用。

于 2017-01-15T12:09:08.840 回答
0

我知道你回答了你自己的问题,有点,但你的回答并不能帮助登陆这里的人们真正融入DelayedJobacts_as_paranoid所以我想我会为其他人解释这个。

  1. 创建迁移以添加deleted_atdelayed_jobs

    rails generate migration add_deleted_at_to_delayed_jobs deleted_at:datetime
    
  2. 运行迁移:

    rake db:migrate
    
  3. 扩展Delayed::Job类以添加acts_as_paranoid

    config/initializers/delayed_job.rb

    class Delayed::Job
    
      acts_as_paranoid
    
    end
    

而已!

现在,当一项工作完成时,您会看到它并没有从delayed_jobs表中删除,它只是在列中放置一个时间戳,deleted_at这样工作人员就不会捡起它。

专业提示:该deleted_at列还指示作业完成的时间。

于 2018-11-16T04:17:25.707 回答