我正在使用活动工作在后台运行我的工作。但是我想在一个场景中在后台运行一个作业,而在其他场景中不在后台运行该作业。让我知道我该怎么做?
例如:
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将不会在后台运行。所以在活动作业中是否还有这样做?
答案 0 :(得分:3)
您可以相应地使用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