2

У меня есть 2 модели: User и PrivateMessage, которые должны быть связаны (как пользователь имеет много личных сообщений, как приемник и отправитель, личные сообщения принадлежат пользователю)Как установить на отношениях между этими двумя моделями рельсов

Это мой private_messages структура таблицы:

private_messages: 
    sender_id:integer 
    reciever_id:integer 
    title:string 
    message:text 

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

class User < ActiveRecord:Base 
    has_many :private_messages 
end 

и

class PrivateMessage < ActiveRecord::Base 
    belongs_to :user, :through => :sender_id 
    belongs_to :user, :through => :reciever_id 
end 

Является ли это правильно?

ответ

6

Вы должны переименовать свои ассоциации, чтобы сказать им друг от друга:

class PrivateMessage < ActiveRecord::Base 
    belongs_to :sender, :class_name => 'User', :foreign_key => 'sender_id' 
    belongs_to :receiver, :class_name => 'User', :foreign_key => 'receiver_id' 
end 

class User < ActiveRecord::Base 
    has_many :sent_messages, :class_name => 'PrivateMessage', :foreign_key => 'sender_id', :dependent => :destroy 
    has_many :received_messages, :class_name => 'PrivateMessage', :foreign_key => 'receiver_id', :dependent => :destroy 
end 
+1

Спасибо! Я понял. – user973254

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