Я построил следующую модель для обработки обмена сообщениями пользователя:
create_table "messages", :force => true do |t|
t.integer "source_id"
t.integer "destination_id"
t.string "object"
t.string "body"
t.datetime "created_at"
t.datetime "updated_at"
end
Вот его ассоциации:
class Message < ActiveRecord::Base
belongs_to :sender, :class_name=>'User', :foreign_key=>'source_id'
belongs_to :reciever, :class_name=>'User', :foreign_key=>'destination_id'
end
И эти другие ассоциации с другой стороны (модель пользователя):
has_many :sent_messages, :class_name=> 'Message', :foreign_key=>'source_id', :dependent=>:destroy
has_many :recieved_messages, :class_name=> 'Message', :foreign_key=>'destination_id', :dependent=>:destroy
Модель правильная и работает правильно, фактически из сообщения я могу узнать, кто является отправителем и кто является получателем, а от пользователя я могу получить все отправленные и полученные сообщения. К сожалению, он не обрабатывает любую ситуацию: что, если получатель или отправитель удалят сообщение? Сообщение уникально, поэтому оно исчезает с обеих сторон (плохо). Как узнать, прочитала ли уже сообщение одна из сторон? Любое предложение ? Как вы думаете, я должен перепланировать модель? Tnx