2014-02-19 45 views
0

我使用的是郵箱gem,我試圖讓它在看到對話後(通過訪問會話#show),我希望收件的is_read屬性轉爲真正。然而,這個屬性在我發送回覆之前不會變成真的。我試着用下面一行:無法弄清楚如何更新郵箱is_read

receipt.update_attributes(is_read: true) 

但返回以下錯誤:

Error (ActiveRecord::ReadOnlyRecord) 

我想我理解錯誤。我認爲這是說該屬性只能被讀取而不能被更新。我的問題是,如果我進入會話#顯示頁面,我如何實現使is_Read變爲真的功能?

回答

1

不是更新該is_read的屬性試試這個

#conversations_controller.rb 
def show 
    @receipts = mailbox.receipts_for(conversation).not_trash 
    @receipts.mark_as_read 
end 

private 

def mailbox 
    @mailbox ||= current_user.mailbox 
end 

def conversation 
    @conversation ||= mailbox.conversations.find(params[:id]) 
end 

您還可以標記整個對話與

conversation.mark_as_read(current_user) 
0

conversation.receipts_for(current_user).update_all(:is_read => true)' in the mark_as_read`方法爲我工作讀取。

def conversation 
    if !params[:id] && @activeConvo 
     @conversation = @activeConvo 
    else 
     @conversation ||= mailbox.conversations.find(params[:id]) 
    end 
end