rails belongs_to的问题

时间:2014-10-03 22:25:28

标签: ruby-on-rails ruby-on-rails-4 belongs-to

嘿伙计们只想弄清楚为什么这不起作用。 基本上这种关系确实

belongs_to :product_category, :foreign_key => :category_id

这个不是

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

错误消息是“NameError:uninitialized constant product :: product_category”

为什么?谢谢!

1 个答案:

答案 0 :(得分: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参数。