我尝试创建一个在创建关联记录时发送ActionCable广播的回调。
after_save :broadcast_connection_open_to_room
before_destroy :broadcast_connection_close_to_room
private
def broadcast_connection_close_to_room
ActionCable.server.broadcast(
'room_' + self.room_id.to_s,
state: "exit",
connection_id: self.id,
)
end
def broadcast_connection_open_to_room
ActionCable.server.broadcast(
'room_' + self.room_id.to_s,
state: "enter",
connection_id: self.id,
html: ApplicationController.render(partial: "connections/connection", locals: {connection: self})
)
end
我的破坏后按预期工作。但是当after_save运行时,我的部分是抛出 未定义的方法`用户名'为nil:NilClass 当它试图渲染我的部分时。
%li.list-group-item{id: "connection_" + connection.id.to_s}
%h4.list-group-item-heading.text-left= connection.user.username
%div.text-left
.pull-right.vcenter
%span Mute Player
%span.glyphicon.glyphicon-volume-off
连接本身并非零。但是,当部分引用相关的用户记录时,它会遇到麻烦。
为什么会发生这种情况,我该怎么做才能解决这个问题?
答案 0 :(得分:0)
这可能是因为您销毁了连接对象本身,所以当活动记录尝试查询关联用户时,实际上找不到它。为什么不尝试将用户传递给部分。
类似的东西:
...locals: {connection: self, user: self.user}