У меня возникли трудности с получением отношения has_and_belongs_to.Rails has_and_belongs_to_many ActiveRecord :: UnknownPrimaryKey
Категория Модель:
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
Я использую существующую базу данных, и созданные модели для всех необходимых данных, отображение столбцов на рельсы именования конвенции.
Вот структура просмотров:
Категории просмотра:
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
Это заставило меня бегать по кругу, пытаясь исправить «недостающее» основное поле! Благодарю. –