例如,perform
在以下作业中最初调用的方法在哪里:
工作/message_broadcast_job.rb
class MessageBroadcastJob < ApplicationJob
queue_as :default
def perform(message)
ActionCable.server.broadcast "room_channel", message: render_message(message) #, roomId: roomId
end
private
def render_message(message)
ApplicationController.renderer.render(partial: 'messages/message', locals: { message: message })
end
end
在 assets/javascripts/channels/room.coffee 中有一个方法调用:
speak: (message, roomId) ->
@perform 'speak', message: message, roomId: roomId
但这似乎调用了channels/room_channel.rb中的相应方法:
def speak(data)
Message.create! text: data['message'], user_id: 1, room_id: data['roomId']
end
那么从哪里调用作业,如何将参数传递给它?(具体来说,我有一个已经room_channel.rb
通过参数传递给的房间频道 ID,但还需要在执行操作中获取它以从相关房间频道广播。
谢谢!