Ruby on rails 使用Action Cable从模型rails调用类方法获取未定义的局部变量或方法

Ruby on rails 使用Action Cable从模型rails调用类方法获取未定义的局部变量或方法,ruby-on-rails,actioncable,Ruby On Rails,Actioncable,我在使用action cable时出错 NameError (undefined local variable or method `connections_info' for MicropostNotificationsChannel:Class): app/channels/micropost_notifications_channel.rb:12:in `notify' app/models/notification.rb:8:in `block in <class:Notific

我在使用action cable时出错

NameError (undefined local variable or method `connections_info' for MicropostNotificationsChannel:Class):

app/channels/micropost_notifications_channel.rb:12:in `notify'
app/models/notification.rb:8:in `block in <class:Notification>'
app/controllers/likes_controller.rb:11:in `create'
Rendering C:/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/actionpack-5.0.0.1/lib/action_dispatch/middleware/templates/rescues/diagnostics.text.erb
...
action cable micropost通知频道

class MicropostNotificationsChannel < ApplicationCable::Channel

  def subscribe
    ...
  end

  def unsubscribe
    ...
  end

  def self.notifiy(notification)
    connection_results = connections_info
    puts connection_results.inspect
  end
end
class MicroPostNotificationsAnnel
Channel.rb

module ApplicationCable
  class Channel < ActionCable::Channel::Base

    def connections_info
      # do stuff here
    end
  end
end
模块应用程序表
类通道
您在
applicationable::Channel
中将
connections\u info
定义为一个实例方法,但是
notify
是一个类方法,因此它在类级别而不是实例级别寻找方法。有时,类会通过使用
方法\u missing
来解决这个问题,但看起来Action Cable并不是一眼就能做到的。如果不了解更多有关您正在尝试执行的操作的信息,很难说是否要将
connections\u info
更改为类方法、
notify
更改为实例方法或其他任何操作。

您已经在
applicationable::Channel
中将
connections\u info
定义为实例方法,但是
notify
是一个类方法,因此它在类级别而不是实例级别寻找方法。有时,类会通过使用
方法\u missing
来解决这个问题,但看起来Action Cable并不是一眼就能做到的。如果不了解更多您正在尝试执行的操作,很难说是否要将
connections\u info
更改为类方法,
notify
更改为实例方法,或者别的什么。

连接\u info
正在获取
ActionCable
存储的所有用户对象,以便我可以获取谁在哪个频道上,并将通知记录保存到db以及推送动态通知。当建立连接时,我可以从
subscribe
调用
notfify
作为实例方法。但我不想从那里打电话给它。我从来不知道必须从实例方法而不是类方法中调用实例方法。有什么原因吗?对不起,我想我现在明白了。谢谢你!我能问一下吗?我需要掌握所使用的ActionCable实例吗?@Leeether我对ActionCable不太熟悉,所以可以单独问一个问题。但是看看,发送通知的推荐方式似乎是从
调用
stream\u,或者在
subscribed
回调中为
调用
stream\u,然后调用
microstostnotificationschannel.broadcast\u到(…)
。除非你正在做一些更高级的事情,否则你不必知道任何时候所有的用户都是谁。谢谢@max。我已经像你说的那样设置了action cable,但它更高级。我想为用户订阅帖子时创建通知,因此不仅像您所说的使用
stream\u from
将用户连接到帖子,我还想为创建通知时连接的每个用户在db中记录一条记录。因此,尝试访问ActionCable实例是我所寻找的,它在客户端为每个用户保留一个副本,但我正在研究如何获得
MicroPostNotificationsAnnel
实例。没有帮助我还是ruby的新手,但我会看看我会怎么做@Leeether是的,也许最好问一个新问题,关注这个问题。你可能会让一些比我更有经验的人加入进来
connections\u info
正在获取
ActionCable
存储的所有用户对象,以便我可以获取谁在哪个频道上,并将通知记录保存到db以及推送动态通知。当建立连接时,我可以从
subscribe
调用
notfify
作为实例方法。但我不想从那里打电话给它。我从来不知道必须从实例方法而不是类方法中调用实例方法。有什么原因吗?对不起,我想我现在明白了。谢谢你!我能问一下吗?我需要掌握所使用的ActionCable实例吗?@Leeether我对ActionCable不太熟悉,所以可以单独问一个问题。但是看看,发送通知的推荐方式似乎是从
调用
stream\u,或者在
subscribed
回调中为
调用
stream\u,然后调用
microstostnotificationschannel.broadcast\u到(…)
。除非你正在做一些更高级的事情,否则你不必知道任何时候所有的用户都是谁。谢谢@max。我已经像你说的那样设置了action cable,但它更高级。我想为用户订阅帖子时创建通知,因此不仅像您所说的使用
stream\u from
将用户连接到帖子,我还想为创建通知时连接的每个用户在db中记录一条记录。因此,尝试访问ActionCable实例是我所寻找的,它在客户端为每个用户保留一个副本,但我正在研究如何获得
MicroPostNotificationsAnnel
实例。没有帮助我还是ruby的新手,但我会看看我会怎么做@Leeether是的,也许最好问一个新问题,关注这个问题。你可能会让一些比我更有经验的人加入进来!
module ApplicationCable
  class Channel < ActionCable::Channel::Base

    def connections_info
      # do stuff here
    end
  end
end