2010-08-11 76 views
0

我有一種傳統的軌道數據庫結構。 它具有如下的結構:軌道上的非常規外鍵

apples 
    id: 
    number: 
    oranges 
    apple_id: (links to apples.number) 
    pears 
    apple_id: (links to apples.id) 

車型,如:

Apple has_many :oranges, :foreign_key => ?, :primary_key => ? 
     has_many :pears 
Orange belongs_to :apple, :foreign_key => ?, :primary_key => ? 
Pears belongs_to :apple 

我堅持着如何寫的關聯。我難以理解外鍵和主鍵和文檔用的has_many和belongs_to的

回答

0

解決方案收盤是:

Apple has_many :oranges, :primary_key => :number 
     has_many :pears 
Orange belongs_to :apple, :primary_key => :number 
Pears belongs_to :apple 

我被假設:foreign_key有事可做的東西往下引入歧途。

0

雲:foreign_key

指定用於關聯的外鍵。默認情況下,這被認爲是這個類的名字,小寫和「_id」後綴。因此,一個使has_many關聯的Person類將使用「person_id」作爲默認值:foreign_key。

:primary_key

指定返回用於關聯的主鍵的方法。默認情況下,這是ID。

一切都取決於行中的表

+0

我有沒有得到你的數據庫結構? – Bohdan 2010-08-11 22:55:05

+0

我編輯了我的問題以更好地解釋模型。 – robotdana 2010-08-11 23:01:54

+0

正如我從你的問題中看到的,你的表中有傳統的行,所以我不明白你爲什麼要指定下列值:foreign_key和:primary_key – Bohdan 2010-08-11 23:09:29