2014-02-19 1 views
0

Я использую жемчужину почтового ящика, и я пытаюсь сделать так, что после того, как я посмотрю на беседу (обратившись к разговорам # show), я хочу, чтобы атрибут is_read квитанции превратился правда. Однако атрибут не изменится, пока я не отправлю ответ. Я попытался с помощью следующей строки:не могу понять, как обновить почтовый ящик is_read

receipt.update_attributes(is_read: true) 

но возвратил следующую ошибку:

Error (ActiveRecord::ReadOnlyRecord) 

Я думаю, что я понимаю эту ошибку. Я думаю, что он говорит, что атрибут может быть прочитан и не обновлен. Мой вопрос в том, как я могу реализовать функциональность, чтобы иметь значение is_Read, если я перехожу на страницу показа цепочек # show?

ответ

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 

 Смежные вопросы

  • Нет связанных вопросов^_^