有人可以告诉我如何将acts_as_paranoid
与DelayedJob
进行整合吗?我尝试过创建课程Delayed::Backend::ActiveRecord::Job
并向其中添加acts_as_paranoid
,但即使我使用初始化程序并require
新课程,acts_as_paranoid也似乎没有做任何事情
我没有收到任何错误,因此paranoia
似乎已正确安装,并且在成功完成后工作被彻底删除 - 这当然是我试图阻止的。
很高兴尝试任何调试建议,如果没有人读到这个并立即知道我是如何搞砸了。
答案 0 :(得分:0)
原来我选择了“默认范围”问题。 acts_as_paranoid
更改默认范围,以便find
仅返回尚未软删除的条目。如果您想查看所有条目,包括软删除的条目,则需要添加with_deleted
作为查询范围,或者在向类添加acts_as_paranoid
时,按照示例添加:
class Client < ActiveRecord::Base
acts_as_paranoid without_default_scope: true
...
end
随着这些变化中的任何一个,事情都在发挥作用。
答案 1 :(得分:0)
我知道您回答了自己的问题,但是您的回答并没有帮助那些希望将DelayedJob
与acts_as_paranoid
集成在一起的人,因此我想为其他人解释一下。
创建迁移以将deleted_at
添加到delayed_jobs
:
rails generate migration add_deleted_at_to_delayed_jobs deleted_at:datetime
运行迁移:
rake db:migrate
扩展Delayed::Job
类以添加acts_as_paranoid
:
config/initializers/delayed_job.rb
class Delayed::Job
acts_as_paranoid
end
就是这样!
现在,当一项工作完成时,您会发现它并没有从delayed_jobs
表中删除,它只是在deleted_at
列中放置了一个时间戳记,以便工人捡起来。
ProTip:deleted_at
列还指示作业何时完成。