2013-05-21 71 views
0

我有has_many和兩個模型之間的關聯belongs_to如下:如何覆蓋默認外鍵?

class Section < ActiveRecord::Base 
self.primary_key = 'id' 
has_many :rights 
end 

class Right < ActiveRecord::Base 
self.primary_key = 'id' 
belongs_to :section 
end 

節表具有ID和SECTION_ID列好。上面的代碼通過部分表中的ID列將Right的部分關聯到Section。我希望它通過SECTION_ID列進行關聯。我怎麼做?

回答

1

編輯:在第二次閱讀我認爲我誤解了你的問題,你實際上想要關聯到Section表中的主鍵以外的字段?這不是很常見,因此我的誤解。

您需要使用:primary_key => 'field_name'代替:foreign_key

belongs_to :section, :primary_key => 'section_id' 
+0

是馬特。我想涉及主鍵以外的字段。我的確如上面所說的通過指定外鍵來嘗試,但那不起作用 – Rahul

+0

嗨@Rahul,我已經更新了我的答案。 – Matt

+0

工作。因此,即使我在正確的模型中定義了主鍵是'id',它是否在關聯時覆蓋它? – Rahul

0

嘗試這樣

class Section < ActiveRecord::Base 
self.primary_key = 'id' 
has_many :rights 
end 

class Right < ActiveRecord::Base 
self.primary_key = 'id' 
belongs_to :section, :foreign_key => "section_id" 
end 
+0

我試過這個,但它仍然通過相同的「ID」列關聯 – Rahul

+0

這個答案和我一樣,誤解了你的問題。 OP正試圖建立一個在Section表中使用非主鍵字段的關係。 – Matt

+0

Rahul,我們通常將兩個表格與section_id進行關聯。 – visnu