我试图解决一个问题。Activerecord与多个字符串作为键的关系
我有一个包含大约10.000条记录的产品模型。这些记录来自一些在线商家供稿,并且属性之间有category_name
。
#<Offer id: 1, external_id: "[\"000002151\", \"Caffettiera Bialetti Dama nuova 1 t...", provider_id: 1, product_title: "Caffettiera Bialetti Dama nuova 1 tazza", product_description: "Ricarica caffè: Caffè macinato; Tipologia: Caffett...", external_model: "DAMA NUOVA", sku: "000002151", mpn: "0002151", ean: "8006363021517", category_code: "MFF", category_name: "Macchine da caffè">
的问题是,类别名称是不是每个mercant独特:一个商人的彩电品类是一个简单的“LED电视”,另一个是“LCD电视”。
在我的仪表板中,我需要筛选一个类别,因此我创建了一个类别模型。我有十大类,每一个“宏观”的类别包括很多category_name
基本上我的类别迁移
create_table :categories do |t|
t.string :name, null: false
t.text :subcategories, array: true, default: []
end
我TV & Monitor
类别都有一个子类别属性,它是一个数组,数组里面我有外部商户为电视定义的各类分类。
['OLED TV', 'LCD TV', 'TV', ...]
如果我使用
Product.where(category_name: category.subcategory)
irb(main):005:0> Offer.where(category_name: ["Mini Micro Hi Fi e boombox", "Radio", "Sbattitori"])
Offer Load (2.2ms) SELECT "offers".* FROM "offers" WHERE "offers"."category_name" IN ('Mini Micro Hi Fi e boombox', 'Radio', 'Sbattitori') LIMIT $1 [["LIMIT", 11]]
查询返回我的所有产品。但是我想创建一个关系,我希望category.products
可以将category_name
包含在我的subcategories
阵列中的所有产品返回给我。
我该怎么办?
你可以复制得到'Product.where(CATEGORY_NAME:category.subcategory)你的SQL查询'? – AntonTkachov
@AntonTkachov添加了查询,型号名称为Offer而非Product –