2013-10-14 96 views
0

我有這樣的結構的基礎數據庫。的Rails 2.1 belongs_to的主鍵

products 
------------------ 
id 
serial 

order 
------------------ 
id 
product_serial 

不幸的是,我不能改變DB的結構。我查看了Rails 2.1的文檔,它說我可以建立像這樣的關係。

belongs_to :product, 
      :class_name => 'Product', 
      :foreign_key => 'product_serial', 
      :primary_key => 'serial' 

但是,這給了我這個錯誤。

Unknown key: primary_key 

沒有主鍵,它會產生這個SQL

SELECT * FROM `products` WHERE (`products`.`id` = #{serial}) 

如何設置在這個belongs_to關係?

編輯爲了記錄在案,我用Rails 2.1的工作。 (我知道,不要告訴我)。

+1

你並不需要指定':因爲這是從關係推斷class_name'。 – harm

+0

對不起,不應該包含那個。我已經有一個名爲'product'的方法,所以我使用了一個縮短的名字,因此需要類名。 – screenmutt

回答

1

如果你檢查Rails 2分支的available options for the belongs_to association,你會發現:primary_key不是其中之一。

它應該是足夠的,在你的情況下,簡單地說明外鍵,你在前面的線一樣。

+0

並非如此Rails中4:http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-belongs_to – harm

+0

OP是使用Rails 2,這也是文檔版本我掛在我回答。 – depa

+0

奇怪,我看着它在APIDoc:http://apidock.com/rails/v2.1.0/ActiveRecord/Associations/ClassMethods/belongs_to,我現在困惑。 :) – harm

0

您的order型號沒有字段(因此稱爲serial)。你不需要指定它,那麼它默認爲id(你確實有)。