如何在Rails 5 Action Cable Channels中访问关注点和应用控制器代码?

问题描述 投票:5回答:1

我的关注里有一些代码,我想从行动有线电视频道调用。

假设我有一个通知频道,我想调用我的关注更新一些

值,并且它确实调用了该方法,但它没有调用另一个方法。

在应用程序控制器中编写。

说。

在我的channel.rb中,我使用了。

class NotificationsChannel < ApplicationCable::Channel
  include NotificationChannel

 def some_method
  create_notification(current_user, quiz)
 end
end

NotificationChannel Concerns代码。

module NotificationChannel
  extend ActiveSupport::Concern

  def create_notification(is_current_user, resource)
    teacher_user_id = resource.lesson_plan.teacher.user_id
    Notification.create(description: "A user with name #{get_user_name(is_current_user)} has liked the  #{resource.title}", user_id: teacher_user_id, url: resource_misc_path(resource, "quiz_notification_like_check"))
  end
end

Now,

第一个问题。

方法 get_user_name(is_current_user) 在关切中无法获得,并且

据载 ApplicationController.

第二个问题。

resource_misc_path(resource, "quiz_notification_like_check" is written in some helper it does not call even helper method.

P.S: 我也注意到了路线有 _path_url 在Channel.rb中也无法访问

有什么合适的变通方法吗?

ruby-on-rails sockets ruby-on-rails-5 actioncable
1个回答
0
投票

这里有一些关于这个话题的非常有用的答案。如何在ActionCable rails-5-api应用中获取current_user?

底线是在Cable中没有session,所以你不能真正使用你的session方法。

你必须直接使用cookie重写它们。

就像 @Sajan 在他的回答中说的那样:"websocket 服务器并不支持会话。"websocket服务器没有session, 但它可以读取和主程序一样的cookies."

© www.soinside.com 2019 - 2024. All rights reserved.