如何以正确的方式查询属于类别和子类别的产品

时间:2016-07-11 12:49:12

标签: ruby-on-rails activerecord

类别和子类别是独立模型。每个类别都有所有子类别。

创建产品时,管理员必须选择一个类别和子类别。

以下是我提出的模型

class Product < ActiveRecord::Base
    belongs_to :category
end

class Category < ActiveRecord::Base
  has_many :products
end

class Sub < ActiveRecord::Base
   has_many :products
end

以下是产品的架构

create_table "products", force: :cascade do |t|
    t.string   "name"
    t.integer  "price"
    t.integer  "category_id"
    t.integer  "sub_id"
  end

产品是用这样的东西创建的

Product.create(name: "Messi magnet custom",category_id: 1, sub_id: 2)

我正在查询属于特定类别和子类别的所有产品,例如

Product.where("category_id = ? AND sub_id = ?",9,3)

我所拥有的协会有什么问题吗?我能做些什么来改善这个?

1 个答案:

答案 0 :(得分:1)

class Category < ActiveRecord::Base
  has_many :products
  has_many :sub_categories
end

class SubCategory < ActiveRecord::Base
  has_many :products
  belongs_to :category
  #Sub_categories table now have a reference to category, i.e., category_id column
end

class Product < ActiveRecord::Base
  belongs_to :category
  belongs_to :sub #You need to add this too
end