RailsジョブはActionCableのどこから呼び出され、どのようにパラメーターを渡すことができますか?

レーザ

たとえばperform、次のジョブで最初に呼び出されるメソッドはどこにありますか。

jobs / 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を持っていますが、関連するルームチャネルからブロードキャストするには、実行アクションでこれを取得する必要もあります。

ありがとう!

レーザ

モデルでは、 models/message.rb

after_create_commit { MessageBroadcastJob.perform_later self }

メッセージの作成後、ジョブをキューに入れます。したがって、ジョブファイルでは、オブジェクト自体(この場合はメッセージ)を介してパラメータにアクセスできます。

具体的には、この場合は次のようになります。

 def perform(message)
    ActionCable.server.broadcast "room_channel_#{message.room_id}", message: render_message(message) #, roomId: roomId
  end

メッセージのすべての属性が使用可能であるため。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

アセンブリでシンボルを呼び出すときに、関数パラメータはどのように渡されますか?

分類Dev

コンパイル時に、指定されたパラメータータイプのセットでジェネリックラムダを正常に呼び出すことができるかどうかを検出する方法はありますか?

分類Dev

anglejsはどのようにmultipulパラメーターをAPIに渡すことができますか

分類Dev

同じパラメーターとメソッド名を使用して、コントローラーはASP.NET CoreMVCで呼び出されるものをどのように見つけることができますか

分類Dev

関数を呼び出すjavascriptオブジェクト内でこのパラメーターを使用するにはどうすればよいですか?

分類Dev

2つのパラメーター@Pathと@PathParamをどのように渡すことができますか

分類Dev

このメソッドを呼び出してパラメータを渡すにはどうすればよいですか?

分類Dev

どのようにしてパラメータを渡すことができますか?LaravelのURLで

分類Dev

AzureWebサイトからAzureWebジョブを呼び出してパラメーターを渡すことはできますか?

分類Dev

RxJava2は、呼び出されたメソッドでonSuccessからの結果をどのように返すことができますか?

分類Dev

引数を渡さずにtk.OptionMenuのコマンドパラメータから関数を呼び出すことはできますか

分類Dev

どのようにしてinitパラメータをHttpSessionListenerに渡すことができますか?

分類Dev

親クラスの関数がclassmethodまたはインスタンスメソッドによって子クラスから呼び出されていることをどのように知ることができますか?

分類Dev

どのように私はこのケースでは、適切にコンストラクタを呼び出すことができますか?

分類Dev

チェーンコードから他のライブラリをどのように呼び出すことができますか?

分類Dev

オブジェクトをパラメーターとして渡すときに、デストラクタが呼び出されているのにコンストラクションが呼び出されていないのはなぜですか?

分類Dev

jQuery $ .postメソッド。呼び出されたcshtmlページからのデータの要求。それが機能することをどのように確認できますか?

分類Dev

フロー内のこの「オブジェクトタイプでコンストラクターを呼び出すことはできません」エラーを修正するにはどうすればよいですか?

分類Dev

Kotlinでは、ディスパッチ先のオブジェクトとレシーバーの両方を指定するメンバー拡張関数を呼び出すことはできますか?もしそうなら、どのように?

分類Dev

すべてのパラメーターが渡されていない場合、どうすれば親メソッドを呼び出すことができますか?

分類Dev

リファインメント内の「スーパー」は、オーバーライドされたメソッドをどのように呼び出すことができますか?

分類Dev

intパラメータの数字に相当する数字キーが押されていることをどのように検出できますか?

分類Dev

親クラスまたは子クラスのいずれかから子クラスのオーバーライドされたメソッドを呼び出すことをどのように決定できますか?

分類Dev

オブジェクトをパラメーターとして渡すことにより、javascript / typescriptコンストラクターを呼び出すにはどうすればよいですか?

分類Dev

派生クラスから純粋仮想メソッドが呼び出されることをどのように保証できますか?

分類Dev

ActiveRecord :: Relationオブジェクトはどのようにしてクラスメソッドを呼び出すことができますか

分類Dev

Java:オブジェクトメンバーはどのようにして親クラスからメソッドを呼び出すことができますか?

分類Dev

派生クラスは基本クラスのプライベートメソッドをどのように呼び出すことができますか?

分類Dev

ライブラリでC ++コードを使用して、Cプログラムから呼び出すことができるのはなぜですか。それはどのように機能しますか?

Related 関連記事

  1. 1

    アセンブリでシンボルを呼び出すときに、関数パラメータはどのように渡されますか?

  2. 2

    コンパイル時に、指定されたパラメータータイプのセットでジェネリックラムダを正常に呼び出すことができるかどうかを検出する方法はありますか?

  3. 3

    anglejsはどのようにmultipulパラメーターをAPIに渡すことができますか

  4. 4

    同じパラメーターとメソッド名を使用して、コントローラーはASP.NET CoreMVCで呼び出されるものをどのように見つけることができますか

  5. 5

    関数を呼び出すjavascriptオブジェクト内でこのパラメーターを使用するにはどうすればよいですか?

  6. 6

    2つのパラメーター@Pathと@PathParamをどのように渡すことができますか

  7. 7

    このメソッドを呼び出してパラメータを渡すにはどうすればよいですか?

  8. 8

    どのようにしてパラメータを渡すことができますか?LaravelのURLで

  9. 9

    AzureWebサイトからAzureWebジョブを呼び出してパラメーターを渡すことはできますか?

  10. 10

    RxJava2は、呼び出されたメソッドでonSuccessからの結果をどのように返すことができますか?

  11. 11

    引数を渡さずにtk.OptionMenuのコマンドパラメータから関数を呼び出すことはできますか

  12. 12

    どのようにしてinitパラメータをHttpSessionListenerに渡すことができますか?

  13. 13

    親クラスの関数がclassmethodまたはインスタンスメソッドによって子クラスから呼び出されていることをどのように知ることができますか?

  14. 14

    どのように私はこのケースでは、適切にコンストラクタを呼び出すことができますか?

  15. 15

    チェーンコードから他のライブラリをどのように呼び出すことができますか?

  16. 16

    オブジェクトをパラメーターとして渡すときに、デストラクタが呼び出されているのにコンストラクションが呼び出されていないのはなぜですか?

  17. 17

    jQuery $ .postメソッド。呼び出されたcshtmlページからのデータの要求。それが機能することをどのように確認できますか?

  18. 18

    フロー内のこの「オブジェクトタイプでコンストラクターを呼び出すことはできません」エラーを修正するにはどうすればよいですか?

  19. 19

    Kotlinでは、ディスパッチ先のオブジェクトとレシーバーの両方を指定するメンバー拡張関数を呼び出すことはできますか?もしそうなら、どのように?

  20. 20

    すべてのパラメーターが渡されていない場合、どうすれば親メソッドを呼び出すことができますか?

  21. 21

    リファインメント内の「スーパー」は、オーバーライドされたメソッドをどのように呼び出すことができますか?

  22. 22

    intパラメータの数字に相当する数字キーが押されていることをどのように検出できますか?

  23. 23

    親クラスまたは子クラスのいずれかから子クラスのオーバーライドされたメソッドを呼び出すことをどのように決定できますか?

  24. 24

    オブジェクトをパラメーターとして渡すことにより、javascript / typescriptコンストラクターを呼び出すにはどうすればよいですか?

  25. 25

    派生クラスから純粋仮想メソッドが呼び出されることをどのように保証できますか?

  26. 26

    ActiveRecord :: Relationオブジェクトはどのようにしてクラスメソッドを呼び出すことができますか

  27. 27

    Java:オブジェクトメンバーはどのようにして親クラスからメソッドを呼び出すことができますか?

  28. 28

    派生クラスは基本クラスのプライベートメソッドをどのように呼び出すことができますか?

  29. 29

    ライブラリでC ++コードを使用して、Cプログラムから呼び出すことができるのはなぜですか。それはどのように機能しますか?

ホットタグ

アーカイブ