我遇到了一些困难,无法使has_and_belongs_to关系正常工作。
分类模型:
class Category < ActiveRecord::Base
has_and_belongs_to_many :products
end
产品型号:
class Product < ActiveRecord::Base
has_many :orders, foreign_key: 'sku', primary_key: 'sku'
has_and_belongs_to_many :categories
end
我正在使用一个现有的数据库,并为所有需要的数据创建了模型,将列映射到Rails命名规则。
以下是视图的结构:
分类视图:
categories
id
name
category_parent
产品视图:
products
id
sku
price
title
产品分类合并视图:
categories_products
category_id
product_id
这是我在控制台上进行测试并产生的错误:
2.0.0p247 :017 > Product.first.categories
Product Load (1.0ms) SELECT `products`.* FROM `products` LIMIT 1
ActiveRecord::UnknownPrimaryKey: Unknown primary key for table categories in model Category.
我尝试去掉产品的其他关联,以消除任何可能的冲突:
has_many :orders, foreign_key: 'sku', primary_key: 'sku'
但是没有它也可以得到相同的结果。
另一个关联正常运行:
Order.first.product
Order Load (2.9ms) SELECT `orders`.* FROM `orders` ORDER BY `orders`.`id` ASC LIMIT 1
Product Load (5.7ms) SELECT `products`.* FROM `products` WHERE `products`.`sku` = '826663144369' LIMIT 1
=> #<Product id: 218464, sku: "1234567890", price: #<BigDecimal:7fabdb577428,'0.2195E2',18(18)>, title: "Blah blah blah">
我使用的是Ruby 2.0.0p247和Rails 4.0.0。