无法弄清楚如何更新邮箱is_read

时间:2014-02-19 17:14:58

标签: ruby-on-rails ruby ruby-on-rails-4 mailboxer

我正在使用邮箱gem并且我正在努力使其在我查看对话后(通过访问对话#show),我希望收据的is_read属性变为true。但是,在我发送回复之前,该属性不会变为真。我尝试使用以下行:

receipt.update_attributes(is_read: true) 

但是返回了以下错误:

Error (ActiveRecord::ReadOnlyRecord)

我想我理解错误。我认为这个属性只能读取而不能更新。我的问题是,如果我去对话#show page,我如何实现让is_Read变为真的功能?

2 个答案:

答案 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