【发布时间】:2020-04-21 11:35:24
【问题描述】:
我是 Ruby on Rails 的新手,过去 2 个月我一直在尝试了解 ActionCable。
我在
中定义了一个辅助方法 :current_userapp/controllers/application_controller.rb
class ApplicationController < ActionController::Base
helper_method :current_user
def current_user
@current_user ||= User.find(session[:user_id]) if session[:user_id]
end
end
当从
调用它时app/views/layouts/application.html.erb
<%= current_user.id %>
它显示:例如 1。 但是,当我将 :current_user 带到 Action Cable 时,它显示为空或 nil。
app/channels/application_cable/connection.rb
module ApplicationCable
class Connection < ActionCable::Connection::Base
identified_by :current_user
def connect
self.current_user
logger.add_tags "ActionCable", "User: #{current_user.id}"
end
end
end
终端: 成功升级到 WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: Upgrade, HTTP_UPGRADE: websocket) 有一个异常 - NoMethodError(undefined method `id' for nil:NilClass)
在此先感谢您的帮助或指导。
【问题讨论】: