2014-10-03 108 views
0

嘿傢伙只是想弄清楚爲什麼這不起作用。 基本上這個關係確實鐵軌問題belongs_to

belongs_to :product_category, :foreign_key => :category_id 

而這其中並不

belongs_to :category, :class_name => :product_category, :foreign_key => :category_id 

的錯誤消息是 「NameError:未初始化不斷的產品:: PRODUCT_CATEGORY」

這是爲什麼?謝謝!

回答

2

後面的示例不起作用,因爲沒有稱爲product_category的類。你提供了錯誤的類名。 Ruby中的類名應該用CamelCase編寫。當Rails尋找product_category類時,它不會找到它。

你的第一個例子的工作原理是因爲Rails從關係名稱中推斷類的名字。

belongs_to :product_category, :foreign_key => :category_id 

它將product_category轉換爲ProductCategory。你可以自己做同樣的事情。打開終端並鍵入以下內容。

'product_category'.camelize.constantize 

你應該傳遞一個字符串,而不是:

belongs_to :category, :class_name => 'ProductCategory', :foreign_key => :category_id 

但在這種情況下,這將是多餘的,因爲Rails可以推斷已經在類名。當無法從關係名稱中推斷出類名時,應使用class_name參數。

+0

是的,非常感謝! – 2014-10-03 22:36:27