2012-04-27 221 views
2

我有2種型號:UserPrivateMessage必須關聯(如用戶有很多私人信息的reciever和發件人,私人信息屬於用戶)這兩個軌道模型之間如何建立關係

這是我的private_messages表結構:

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

這是我很難明白,我怎麼可以連接相同的消息發送者的用戶和用戶reciever,現在我的模型代碼如下所示:

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 2012-04-27 11:47:51

相關問題