Ruby on rails rails的问题属于

Ruby on rails rails的问题属于,ruby-on-rails,ruby-on-rails-4,belongs-to,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:未初始化的常量产品::产品类别” 为什么呢?谢谢 后一个示例不起作用,因为没

嘿,伙计们,我只是想弄明白为什么这样不行。 基本上,这种关系确实如此

belongs_to :product_category, :foreign_key => :category_id
而这个没有

belongs_to :category, :class_name => :product_category, :foreign_key => :category_id
错误消息为“NameError:未初始化的常量产品::产品类别”


为什么呢?谢谢

后一个示例不起作用,因为没有名为
product\u category
的类。您提供了错误的类名。Ruby中的类名应该用CamelCase编写。当Rails查找
产品\u类别
类时,它不会找到它

第一个示例之所以有效,是因为Rails根据关系的名称推断类的名称

belongs_to :product_category, :foreign_key => :category_id
它将
产品类别
转换为
产品类别
。你自己也可以做同样的事情。打开终端并键入以下内容

'product_category'.camelize.constantize
您应该传入一个字符串:

belongs_to :category, :class_name => 'ProductCategory', :foreign_key => :category_id
但在这种情况下,这是多余的,因为Rails已经可以推断类名。当无法从关系名称推断类名时,应使用
class\u name
参数