当前位置:  开发笔记 > 编程语言 > 正文

Rails 5,动作电缆和current_user

如何解决《Rails5,动作电缆和current_user》经验,为你挑选了0个好方法。

所以我有这个用例,我在一个控制器(带有ApplicationController.renderer)中呈现一条消息,然后广播给几个用户.广播也在同一控制器内执行.执行对某个对象的更新时,将触发这两个操作.

问题是,我需要访问该渲染视图中的current_user对象,当然,我无法将当前用户渲染为局部变量,因为这样的消息将与广播消息的用户一起发送,而不是将看到该视图的最终用户.

因此,在阅读了几篇博客文章和Rails文档之后,我设置了使用cookie的身份验证,以便通过操作电缆支持.

我的问题是:如何在渲染视图中访问最终用户的对象(current_user)?

目前,我的连接类看起来像这样.但是,如何使用此变量(logged_user)呈现该视图?

module ApplicationCable
  class Connection < ActionCable::Connection::Base
   identified_by :logged_user

   def connect
     self.logged_user = User.find_by(id: cookies.signed[:user_id])
   end
 end
end

我的控制器看起来像这样:

(...)

 def update 
   if @poll.update(poll_params)
     broadcast_message(render_message(@poll), @poll.id, @poll.room.id)
     (...)
   end
 end

 def broadcast_message(poll = {}, poll_id, room_id)
   ActionCable.server.broadcast 'room_channel', body: poll, id: poll_id, room_id: room_id
 end

 def render_message(poll).
   if poll.show_at.to_time <= Time.now
     ApplicationController.renderer.render(
       partial: 'rooms/individual_student_view_poll',
       locals: {
         poll: poll,
         room: @room
       })
   end
 end

(....)

所以基本上,我的最终目标是在广播消息后访问logged_user对象.

谢谢

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有