是否在后台运行活动作业方法取决于方案



我正在使用活动作业在后台运行我的作业。但是我想在一个场景中在后台运行一个作业,而在另一个场景中不在后台运行该作业。让我知道我该怎么做?

例如:

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_nowperform_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

最新更新