0

私はメールボックスの gem を使用しており、(conversations#show にアクセスして) 会話を見た後、レシートの is_read 属性を true にするようにしようとしています。ただし、応答を送信するまで、属性は true になりません。次の行を使用してみました:

receipt.update_attributes(is_read: true) 

しかし、次のエラーが返されました:

Error (ActiveRecord::ReadOnlyRecord)

私はエラーを理解していると思います。属性は読み取りのみ可能で、更新はできないと言っていると思います。私の質問は、conversation#show ページに移動した場合に is_Read が true になるように機能を実装するにはどうすればよいですか?

4

2 に答える 2

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)
于 2014-02-23T21:33:09.543 に答える