ユーザーモデル、セッションパラメーター、その他の情報を保持する ServiceClass のインスタンスである current_user のようなものを使用すると仮定しましょう。問題は、websocket との接続中に変数が設定され、異なるサブスクリプションのすべての AC 呼び出しで再利用されることです。
次に、ある時点でユーザーが自分のユーザー名を更新することを決定すると、 current_user.update(new_username) を呼び出すと問題なく動作します。
ただし、そのユーザーの下にある他の AC サブスクリプションは、依然として古いユーザー モデルを使用しています。各サブスクリプションは独自のスレッドで動作するため、あるスレッドでユーザー モデルを更新しても、他のスレッドでは更新されないと思います。そのような場合の最善のアプローチは何ですか?
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