Привет, я пытаюсь внедрить систему сообщений, которая используется в социальных сетях.Проблема, с которой я сталкиваюсь, связана, во-первых, со структурой базы данных и, во-вторых, с тем, как реализовать ее в рельсах.
Моя первая идея - я использую 3 таблицы:
messages: id | subject | text | made_at
receivers: id | message_id | read: boolean
создатели: id | message_id | read: boolean
Теперь мне интересно, как реализовать следующие функции:
1.) пользователь можетудали его сообщение.но так как оба хотят прочитать сообщение, как сделать так, чтобы сообщение было удалено только тогда, когда его удалили оба пользователя.
2.) как мне реализовать ответ?или на самом деле, как мне найти соответствующего создателя?
3). как узнать, прочитал ли получатель почту?
другая идея заключается в следующем: creator_messages: id | creator_id | receive_id | subject | text | read | creation_at receive_messages: то же самое, что и creator_messages
это различает пользователей, поэтому они могут удалять свои сообщения индивидуально.но как мне узнать, было ли письмо прочитано или нет?
мой третий подход был в основном вторым, но только одним сообщением в таблице, и затем отображал это пользователю.
1. сообщение удаленокак только один из пользователей удалит его.
2. на самом деле, как мне представить отношения как has_many и принадлежит ему?
Я думал, что это будет работать так:
model User
:has_many :send_messages, :class_name=>"messages", :foreign_key=>"creator_id"
:has_many :received_messages, :class_name=>"messages", :foreign_key=>"receiver_id"
end
model Messages
belongs_to :user
end
но так или иначе я не заставил это работать.думаю, я упускаю что-то простое здесь.
Надеюсь, кто-то может мне помочь =) спасибо большое