2010-06-04 65 views
3

我知道,如果我在表中命名一列「othertablename_id」,rails會知道使用該列作爲belongs_to或其他關係。如果我想從同一個表中獲得多個ID,顯然這是行不通的,因爲我會有重複的列名。建立一個涉及同一個表中兩行的表的最佳方法是什麼?正如在約會表中恰好涉及兩個用戶一樣。來自同一個表的多個id的Rails關係表

回答

6

嗯我知道了

belongs_to :user_1, :class_name => "User" 
belongs_to :user_2, :class_name => "User" 

將分別使用user_1_id和user_2_id列。列應該被命名爲更具描述性的內容,但它很簡單。

+0

如果必須設置具有「n」個連接到同一個表的查詢,該怎麼辦?我想要做同樣的動作,但是加入「n」個連接數,所以我想要更優雅的東西。 – 2012-08-06 01:14:38

+0

不錯,夥計 - 這是2016年,這仍然幫助我。 – skwidbreth 2016-06-09 19:56:01

1

像模特:

Appointment 
================= 
source_user_id 
object_user_id 

將幫助?

編輯在361頁閱讀rails bible,我這個提取:

許多一對多的關係

...一個產品可以屬於多個類別 ,每類別可能是 包含多個產品。這是多對多關係的一個示例 。就好像 這個關係的每一邊都包含另一邊的項目集合 。

alt text http://img180.imageshack.us/img180/4004/dibujolfa.png

在Rails中,我們通過增加 has_and_belongs_to_many聲明 兩種模型表達這一點。從現在開始,我們將 縮寫本聲明 「的habtm。」許多一對多關聯是 對稱,無論是連接表 聲明每個 其他使用他們的協會「的habtm。」

在數據庫中,使用中間連接表實現多對多關聯。這包含連接兩個 目標表的 外鍵對。 Active Record假定 該聯接表的名稱是按字母順序排列的兩個目標表 名稱的 串聯。在我們的 示例中,我們將表 類別加入到表產品中,因此 Active Record將查找名爲categories_products的聯合表 表。

所以,我認爲,所有你所要做的,就是用has_and_belongs_to_many聲明。

+0

那麼我該如何告訴rails在關係中使用這些列。 (belongs_to:user,可能是這裏的東西嗎?) – 2010-06-04 22:29:49

+0

謝謝,你說的是真實的,但它並不能解決我心中的問題。我需要將被引用的兩行區分爲單獨的屬性。再次,謝謝。 – 2010-06-04 22:59:10