Отслеживать прочитанные/непрочитанные пользовательские сообщения с помощью таблицы MessageClicks?

Я пытаюсь реализовать простую систему "Входящие" для пользователей моего приложения, чтобы они могли отправлять друг другу простые сообщения, как и во многих системах форумов.

Если User has_many :messages, как я могу отслеживать и уведомлять пользователя о сообщениях, непрочитанных с момента последнего прочтения?

Я думаю, что клики по ссылке на экран Messages нужно записывать в отдельную таблицу (MessagesClicks).

Это лучший подход?

Затем я проверяю таблицу MessagesClicks, чтобы увидеть, не появились ли какие-либо новые сообщения с момента последнего нажатия на эту ссылку — на основе поля last_clicked или updated_at.


person eggdrop    schedule 13.10.2009    source источник


Ответы (1)


Я бы отслеживал, когда сообщение было прочитано в самом сообщении со значением по умолчанию, равным нулю.

Если у пользователя есть какие-либо сообщения со значением dateRead, равным нулю, то у них есть непрочитанные сообщения.

Когда вы отображаете сообщение пользователю на экране «Сообщения», обновите свойство dateRead сообщения с нуля на настоящее.

person Instantsoup    schedule 13.10.2009
comment
@user730569 user730569 в этом случае вы можете добавить справочную таблицу, содержащую user_id и message_id (и, возможно, временные метки или другую интересную информацию) и сохранить эту информацию там. - person tosh; 14.06.2012
comment
Это не будет работать для разговоров с несколькими участниками. Для этого вам придется создать другую ассоциативную модель, скажем, ReadReceipt - person Sachin; 07.02.2017