我使用Rails + DelayedJob Mongoid。我有这个模型:
class User
def run
...
end
end
我创建了新的Dejayed::Job
对象:
user = Use.create
user.delay.run
我怎么能这样做?
Delajed::Job.where(object_id: user.id)
答案 0 :(得分:1)
我不确定这是否适用于您的情况。
如果你有delayed_job对象id,你可以像普通的activerecord对象一样找到它。
# find a job by id
job = Delayed::Job.find(params[:id])
现在你没有身份证明。然后在创建作业本身期间添加一些独特的东西
users_controller.rb 中的
user = User.create
user.rb 中的
def delayed_run
my_job = MyJob.new('xyz')
job = Delayed::Job.enqueue(run, 0, 1.hour.from_now)
job.user_id = self.id
end
在此之后,您可以从唯一的user_id
中找到延迟的作业对象Delayed::Job.where(user_id: 5)
答案 1 :(得分:0)
根据@aelor的答案,最后我必须将字段object_id
添加到Job类:
# config/initializers/dejayed_job.rb
module Delayed
module Backend
module Mongoid
class Job
include ::Mongoid::Document
field :object_id
end
end
end
end
然后就可以了:
user = Use.create
user.delay(object_id: user.id).run
Delayed::Job.where(object_id: 5).first
=> #<Delayed::Backend::Mongoid::Job _id: 551a5116726a750e08000000