我正在使用活动作业在后台运行我的作业。但是我想在一个场景中在后台运行一个作业,而在另一个场景中不在后台运行该作业。让我知道我该怎么做?
例如:
def update_name(user_id, name)
user = User.find_by_id(user_id)
user.update_attribute(:name, name)
end
handle_asynchronously :update_name, if is_delayed
在此示例中,如果is_delayed为 true,我将在后台运行update_name方法。如果is_delayed为 false,则update_name不会在后台运行。那么,在积极的工作中是否有人可以做到这一点呢?
您可以相应地使用perform_now
或perform_later
。
class UpdateUserNameJob < ActiveJob::Base
queue_as :default
def perform(user_id, name)
user = User.find_by_id(user_id)
user.update_attribute(:name, name)
end
end
根据is_delay
值延迟作业执行
if is_delayed
UpdateUserNameJob.perform_later(user_id, name)
else
UpdateUserNameJob.perform_now(user_id, name)
end