2010-02-28 43 views
0

我有活動,文件和調查所有需要能夠與四列鏈接到彼此,我打算具有連接表如下:如何在RoR中將多個不同類型的元素鏈接到另一個元素中?

link_elements{ 
    element1_type CHAR(1) 
    element1_id INTEGER 
    element2_type CHAR(1) 
    element2_id INTEGER 
} 

的問題是我不能瞭解如何在RoR中創建模型,以便我可以使用元素類型字段標識相應元素ID屬於哪個表(文檔,事件或調查)。我對Ruby真的很陌生,任何幫助我都會很感激。

+0

這三個模型是如何鏈接的?有沒有用戶模型?你能解釋他們是如何相互聯繫的嗎?例如:事件可以有一個文件和調查或文件可以有一個事件和調查等從您的描述,是不可能辨別您的要求。 – 2010-02-28 03:37:53

+0

我需要能夠將任何類型的元素(文檔,事件或調查)鏈接到任何其他類型的元素。因此,一個文件可能與兩個事件和三個調查相關聯,而一個調查可能與兩個事件和四個文件相關聯,一個事件可能與兩個文件和12個調查相關聯。 – 2010-02-28 17:54:34

+0

此表中的示例條目可能如下所示: {'document','12','survey','24'} {'document','12','event','12'} 理論上這將鏈接一個ID爲12的文檔到一個ID爲24的調查,同一個文檔的一個ID爲12的事件。我的猜測是我需要使用has_many:through:關係,但我可以'弄清楚如何使用表中的第一列和第三列來創建模型來區分類型。 – 2010-02-28 17:56:27

回答

0

我想你只是在尋找has_manybelongs_to關聯。

如果您有事件模型,文檔模型和測量模型,那麼您可以在Models文件夾中的相應.rb文件中指定它們是否屬於其他模型。

例如:您希望調查屬於文檔。在Survey.rb中,添加行belongs_to :document。在Document.rb中,添加行has_many :surveys

現在,如果在Surveys表中添加新的「document_id」列,它將查找與該列中的id整數對應的Document對象。

欲瞭解更多信息,請查閱Rails API

+0

文檔存儲在一個表中,調查在一個表中,事件存儲在另一個表中。簡單地向這些表添加一列只會讓我將每個元素鏈接到每種類型的其他元素。我需要弄清楚如何創建一個表讓我可以將這些元素鏈接到一起,就像我在問題的原始發佈中提到的那樣,並讓Ruby讀取第一列作爲表標識符,將第二列讀作行標識符。 – 2010-02-28 17:55:50

+0

啊好的。那麼你需要一個has_and_belongs_to_many關係。此關聯查找具有您正在關聯的兩個對象的ID的連接表。我沒有親自使用它,所以我不能給你具體的東西,但看看這裏(http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html)並向下滾動到Many-to-很多部分。你可以在這裏看到連接表的樣子(http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#M001836)。我猜你需要3個獨立的連接表:文檔調查,文檔事件和事件調查。 – funkymunky 2010-02-28 22:50:21

相關問題