我有一個人物模型和鏈路模型。鏈接模型表示從角色到另一角色的鏈接。鏈接具有文字「描述」屬性。從字符A到字符B的鏈接不同於從B到A的相反鏈接。字符與另一個字符有零或一個鏈接。一個角色可能有不同角色的各種鏈接。一個角色可以通過各種不同的角色來鏈接。連接表的ActiveRecord關係鏈接相同表的兩條記錄?
我二手Active Record的關係,以實現部分字符和鏈接模型之間的關係:
class Character
has_many :links # the links from the character to other characters
class Link
belongs_to :character # the character from which starts the link to another character
這給我有用的方法,如character.links或link.character(從這個字符開始的所有環節的陣列) (人物從開始的鏈接)
鏈接機型還具有to_character_id
其中包含的字符誰去鏈接的ID。因此,從字符A到人物B的鏈路是具有以下屬性的實例:
character_id
=字符的id一個to_character_id
=人物Bdescription
的ID =一些文本
我寫各種額外的方法,比如character.links_to
(返回一個指向字符的所有環節的陣列)或link.to_character
(返回一個指向該鏈接的文字),或character.characters_who_link_to
(返回其他字符的數組,其中包含該字符的鏈接)。我還寫了一個回調,以確保刪除一個字符時,所有去這個字符的鏈接都會被刪除(恢復相同)。
可以使用額外的AR關係的聲明這會爲我提供這種額外的方法,這樣我就不用自己寫這些方法和回調?
敏捷Web開發使用Rails呈現在節中的解決「使用模型作爲聯接表」,但對於一個連接表連接兩個不同的表。 在我的情況下我的連接錶鏈接加入一個表的記錄,人物。
所以基本上你想要字符has_and_belongs_to_many:characters關係? – ErsatzRyan 2009-06-05 18:17:05