2012-06-18 108 views
0

我有消息和用戶模型與相應的表。
Messages表具有像user_from和user_to這樣的字段。Rails3活動記錄協會

如何模型關聯到能夠訪問發件人和收件人的用戶對象:

message.user_from.name 
message.user_to.id 
... 

感謝。

回答

0

我的情況下,完整的解決方案是:

belongs_to :sender, 
    :class_name => "User", 
    :foreign_key => "sender_id", 
    **:primary_key => "uid"** 

    belongs_to :recipient, 
    :class_name => "User", 
    :foreign_key => "recipient_uid", 
    **:primary_key => "uid"** 

因爲用戶標識不是用戶表中的主鍵。

2

你需要更新你的消息模型是這樣的:

belongs_to :user_from, :class_name => "User" 
belongs_to :user_to, :class_name => "User" 

這港島線,可以創建通過它們的ID鏈接到用戶表信息表下的相應字段。

+0

你的意思是belongs_to我猜。如果存儲外鍵的表列也被稱爲user_from和user_to,它仍然不起作用。 –

+0

感謝您的回答。 這實際上是我做的,它不起作用。但我認爲它是正確的解決方案,我的代碼或數據庫中還有其他一些錯誤。 我在我的開發機器上使用SQLight。我應該定義外鍵來實現這個功能嗎? – Savash

1

如果db將用戶id作爲外鍵存儲在消息表中,則不能爲關聯使用相同的名稱。但是,你可以說:

class Message 
    belongs_to :from, class: 'User', foreign_key: :user_from 
    belongs_to :to, class: 'User', foreign_key: :user_from 
end 
在軌

,它是使用<assiciation_name>_id爲外鍵的列名的最佳實踐,那麼你可以使用簡單的

class Message 
    belongs_to :user_from, class: 'User' # foreign_key: :user_from_id by default 
    belongs_to :user_to, class: 'User' # foreign_key: :user_to_id by default 
end