【问题标题】:Rails ActiveJob Start From ControllerRails ActiveJob 从控制器开始
【发布时间】:2017-12-15 10:25:03
【问题描述】:

我有一些自定义代码可以调用一些后端系统并远程更新数据库。我有一个执行任务的 ActiveJob:

## Runs join code
class DataJoin < ApplicationJob
  queue_as :default

  def perform
    join = Joiner.new
    join.run
    NotifMailer.sample_email.deliver_now
  end
end

我想从控制器/视图手动启动 ActiveJob:

class AdminController < ApplicationController
  before_action :verify_is_admin

  private def verify_is_admin
      (current_user.nil?) ? redirect_to(root_path) : (redirect_to(root_path) unless current_user.admin?)
  end

  def index
    @username = current_user.name
    @intro = "Welcome to the admin console"
  end

  def join
   ## Code to start ActiveJob DataJoin??
  end
end

如何从控制器启动 ActiveJob?

【问题讨论】:

    标签: ruby-on-rails rails-activejob


    【解决方案1】:

    试试这个:

    DataJoin.perform_later
    

    perform_later 将作业排入指定队列。如果您的活动作业的perform 方法接受一些参数,您甚至可以在perform_later 中传递它们,这些将在执行时可用。

    DataJoin.perform_later(1, 2, 3)
    
    # DataJoin
    def perform(a1, a2, a3)
      # a1 will be 1
      # a2 will be 2
      # a3 will be 3
    end
    

    【讨论】:

      【解决方案2】:

      请阅读official guide on ActiveJob

      def join
        DataJoin.perform_later
      end
      

      【讨论】:

        猜你喜欢
        • 2015-06-16
        • 1970-01-01
        • 2014-12-22
        • 1970-01-01
        • 1970-01-01
        • 2016-04-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多