嘿伙计们只想弄清楚为什么这不起作用。 基本上这种关系确实
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”
为什么?谢谢!
答案 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
参数。