2014-10-03 77 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