Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 是否在后台运行活动作业方法取决于场景_Ruby On Rails_Ruby_Delayed Job_Rails Activejob - Fatal编程技术网

Ruby on rails 是否在后台运行活动作业方法取决于场景

Ruby on rails 是否在后台运行活动作业方法取决于场景,ruby-on-rails,ruby,delayed-job,rails-activejob,Ruby On Rails,Ruby,Delayed Job,Rails Activejob,我正在使用活动作业在后台运行我的作业。但我想在一个场景中在后台运行一个作业,在另一个场景中不在后台运行该作业。请告诉我如何才能做到这一点 例如: 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\u delayed为tr

我正在使用活动作业在后台运行我的作业。但我想在一个场景中在后台运行一个作业,在另一个场景中不在后台运行该作业。请告诉我如何才能做到这一点

例如:

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\u delayed为true,我将在后台运行update\u name方法。如果is\u delayed为false,则update\u name将不会在后台运行。那么在活动作业中是否仍有此操作?

您可以相应地使用
立即执行
稍后执行

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

您可以相应地使用
立即执行
稍后执行

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\u delayed
方法,只需在该类中定义一个将返回布尔值的
is\u delayed
方法value@AshikSalamn您能告诉我“现在执行”是否异步运行吗?
perform\u now
将立即执行作业而不排队。@AshikSalamn您能告诉我吗告诉我“现在执行”是否异步运行?
perform\u now
将立即执行作业而不排队。