Я хочу запросить db с помощью вызова Merchant.products .. Но я не могу заставить это работать. Моим первичным ключом должен быть merchant_identifier на столе торговцев, с иностранным ключ merchant_identifier в таблице продуктов. Моя схема:Отношение Has_many с пользовательским первичным ключом не работает
create_table "merchants", id: false, force: :cascade do |t|
t.string "merchant_identifier", null: false
t.string "name"
t.string "token"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
add_index "merchants", ["merchant_identifier"], name:
"index_merchants_on_merchant_identifier", unique: true
И тогда мои продукты таблица
create_table "products", force: :cascade do |t|
t.text "title"
t.text "sellersku"
t.string "merchant_identifier"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
add_index "products", ["merchant_identifier"], name:
"index_products_on_merchant_identifier"
И мои модели
class Product < ActiveRecord::Base
belongs_to :merchant, foreign_key: "merchant_identifier"
end
class Merchant < ActiveRecord::Base
self.primary_key = 'merchant_identifier'
has_many :products
end
Это ошибка, я получаю, когда я пытаюсь получить продукты, которые принадлежат к торговцу. .
SELECT "products".* FROM "products" WHERE "products"."merchant_id" = ?
[[nil, "A340I3BHJ03NV9"]]SQLite3::SQLException: no such column:
products.merchant_id: SELECT "products".* FROM "products" WHERE
"products"."merchant_id" = ?
ActiveRecord::StatementInvalid: SQLite3::SQLException: no such column:
products.merchant_id: SELECT "products".* FROM "products" WHERE
"products"."merchant_id" = ?
Awesome !! Спасибо много.. – ToddT