延迟作业 - 按对象 ID 查找
Delayed Job - Find by object id
我使用了 Rails + DelayedJob Mongoid。我有这个型号:
class User
def run
...
end
end
我创建了新的 Dejayed::Job
对象:
user = Use.create
user.delay.run
我怎样才能做这样的事情?
Delajed::Job.where(object_id: user.id)
我不确定这是否适用于您的情况。
如果你有 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)
根据@aelor 的回答,最后我不得不将字段 object_id
添加到 Job class:
# 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
我使用了 Rails + DelayedJob Mongoid。我有这个型号:
class User
def run
...
end
end
我创建了新的 Dejayed::Job
对象:
user = Use.create
user.delay.run
我怎样才能做这样的事情?
Delajed::Job.where(object_id: user.id)
我不确定这是否适用于您的情况。
如果你有 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)
根据@aelor 的回答,最后我不得不将字段 object_id
添加到 Job class:
# 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