2016-02-24 3 views
0

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

здесь базовые настройки,

User has_many Listings

Listing BELONGS_TO User

Для добавления частной системы обмена сообщениями, как описано выше, я планирую как ниже

Conversation has_many Messages

Message belongs_to Conversation

listing has_many conversation

user has_many conversation

conversation belongs_to listing

conversation belongs_to user

Я никогда дон Что-то такое сумасшедшее. У меня такое чувство, что есть еще один лучший способ сделать это, или я его перехитрил. Я знаю, что я легко создаю обмен сообщениями, если он находится между двумя пользователями, но поскольку у пользователя может быть много списков, и я хочу разный разговор для каждого листинга (так что в основном разговор между пользователем и листингом) даже от одного и того же владельца. Может ли кто-то пролить свет, в какой подход пойти на схему дизайна в этой ситуации?

ответ

1

я предлагаю использовать has_many через для разговоров: has_many Перечни


пользователя

Список BELONGS_TO пользователя

Диалог belongs_to Листинг

Разговор HAS_MANY сообщения

сообщение Белон gs_to Диалог

Листинг has_many Диалоги

ПользовательА has_many разговоры через: список, класс: Пользователь

UserB has_many разговоры через: список, класс: Пользователь


Было бы неплохо конечно, думать о лучших именах UserA и UserB, но отправитель/получатель действительно не работает.

1

Все хорошо, работает ли оно?

Один вопрос: существуют ли разговоры между пользователями? Если это так, вы можете сделать некоторое прогностическое наименование ваших объектов, например. ListingUserConversation.

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