2016-10-31 93 views
0

我想創建一個回調,當創建一個關聯的記錄時發送我的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運行時,我的部分拋出未定義的方法`用戶名'爲零: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

這可能是因爲你銷燬了連接對象本身,所以當活動記錄試圖查詢關聯用戶時,實際上找不到它。爲什麼不嘗試將用戶傳遞給部分。

喜歡的東西:

...locals: {connection: self, user: self.user} 
+0

我試過爲好,但它產生相同的結果。 –

+0

'%h4.list-group-item-heading.text-left = User.find(connection.user_id).username'? – Jeff