我正在使用邮箱gem并且我正在努力使其在我查看对话后(通过访问对话#show),我希望收据的is_read属性变为true。但是,在我发送回复之前,该属性不会变为真。我尝试使用以下行:
receipt.update_attributes(is_read: true)
但是返回了以下错误:
Error (ActiveRecord::ReadOnlyRecord)
我想我理解错误。我认为这个属性只能读取而不能更新。我的问题是,如果我去对话#show page,我如何实现让is_Read变为真的功能?
答案 0 :(得分: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)
答案 1 :(得分: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