2

ユーザーモデル、セッションパラメーター、その他の情報を保持する ServiceClass のインスタンスである current_user のようなものを使用すると仮定しましょう。問題は、websocket との接続中に変数が設定され、異なるサブスクリプションのすべての AC 呼び出しで再利用されることです。

次に、ある時点でユーザーが自分のユーザー名を更新することを決定すると、 current_user.update(new_username) を呼び出すと問題なく動作します。

ただし、そのユーザーの下にある他の A​​C サブスクリプションは、依然として古いユーザー モデルを使用しています。各サブスクリプションは独自のスレッドで動作するため、あるスレッドでユーザー モデルを更新しても、他のスレッドでは更新されないと思います。そのような場合の最善のアプローチは何ですか?

class ServiceClass

def initialize(session,...)
  @session = session
  @user = current_user
end

 def update!(username)
  @user.username = username
  @user.save!
 end

 ...
end

module ApplicationCable
    class Channel < ActionCable::Channel::Base
      def current_user
        @current_user ||= ServiceClass.new(session, user)
      end
    end
end
4

1 に答える 1