Мне нужно внедрить очень простую систему обмена сообщениями между двумя пользователями, и единственное требование - поддерживать каждый разговор между двумя пользователями отдельно. Интересно, можно ли и разумно использовать только одну модель Message(sender_id, recipient_id)
для достижения цели.Система обмена сообщениями Simple Rails
Предположим, я хочу получить индекс всех разговоров.
- Регистрация на
user.id = recipient_id
иuser.id = sender_id
, чтобы получить все сообщения, связанные с конкретным пользователем - Сортировать результаты по
id
противолежащим участникам (будь тоsender_id
илиrecipient_id
) для формирования групп сообщений - chatboxes. Это, я думаю, самый сложный шаг, поскольку противоположный пользователь может быть отправителем или получателем в одном разговоре. - Дальнейшие результаты заказа внутри каждой группы по дате создания для отображения сообщений в их первоначальном порядке. Каждая группа обозначает другой разговор.
Я пробовал Mailboxer
самоцветом, но это кажется излишним для этого случая. Я также думаю о другом решении, основанном на введении нового объекта Conversation
с отношением «один ко многим» с сообщениями.
Кажется хорошим, но то, что я точно ищу, - это способ группировать сообщения, которые принадлежат одному разговору между двумя людьми, например '@ user.conversations [0] .messages' – user1756971