我正在尝试使用带有基本实验的rails从头开始构建时尚电子商务网站。向产品添加产品属性的最佳方法是什么,例如。大小/颜色?
我试图通过基于此处的示例结构创建以下模型来实现:http://www.webassist.com/tutorials/Free-eCommerce-MySQL-Database。但是我正在努力实施,任何人都可以帮忙。
我的模型如下:
class Product < ApplicationRecord
has_many :product_attributions
has_many :product_attribute, through: :product_attributions
end
class ProductAttribute < ApplicationRecord
has_many :product_attributions
has_many :product, through: :product_attributions
has_one :product_attribute_group, through: :product_attributions
end
class ProductAttributeGroup < ApplicationRecord
has_many :product_attributions
has_many :product_attribute, through: :product_attributions
end
class ProductAttribution < ApplicationRecord
belongs_to :product
belongs_to :product_attribute
belongs_to :product_attribute_group
end
释
ProductAttribute用于列出每个属性,例如s / m / l / red / blue
ProductAttributeGroup将每个ProductAttribute分配给一个组,例如size / color
我的架构如下:
create_table "product_attribute_groups", force: :cascade do |t|
t.string "name"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "product_attributes", force: :cascade do |t|
t.string "value"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "product_attributions", force: :cascade do |t|
t.integer "product_id"
t.integer "product_attribute_id"
t.integer "product_attribute_group_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "products", force: :cascade do |t|
t.string "title"
t.string "slug", null: false
t.text "description"
t.decimal "price"
t.boolean "status", default: false, null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
由于