2017-04-08 65 views
2

我有以下代码Rails的工作中:如何在rails作业中访问rails helper方法current_user?

class MessageBroadcastJob < ApplicationJob 
    queue_as :default 

    def perform(message) 
    ActionCable.server.broadcast "room_channel", message: render_message(message),msg: message, user: current_user 
    end 

    private 
    def render_message(message) 
    ApplicationController.renderer.render(partial: 'messages/message', locals: { message: message}) 
    end 
end 

正如你所看到的,我想通过current_user,但我不能访问色器件Rails的helper方法。

回答

4

设计辅助方法在ActiveJobs中不可用,您可以改为将current_user标识传递给perform方法,并在此处获取用户

def perform(message, current_user_id) 
    current_user = User.find(current_user_id) 
    ActionCable.server.broadcast "room_channel", message: render_message(message),msg: message, user: current_user 
end 
相关问题