我需要一些建议。我是建模数据库的新手,所以我想知道什么是最方便的数据库模型,这将使我的生活更轻松。我有一个可以有多个描述性子类别的Car项目,比如TireCategory,GlassCategory,EngineCategory ......
我正在考虑做这样的事情:
class Car < ActiveRecord::Base
belongs_to :tire_category
belongs_to :glass_category
belongs_to :engine_category
#Car would have three additional columns: tire_category_id, glass_category_id, engine_category_id
end
class TireCategory < ActiveRecord::Base
has_many :cars
end
class GlassCategory < ActiveRecord::Base
has_many :cars
end
class EngineCategory < ActiveRecord::Base
has_many :cars
end
这种推荐方式或其他关系是否更合适?谢谢!
答案 0 :(得分:1)
您可以将汽车(使用uniq数据,如型号名称和sku)存储在一个表格中,将属性(如引擎,眼镜)存储在另一个表格中,并将另外一个表格存储在汽车和属性之间。
class Car < ActiveRecord::Base
has_many :car_properties, dependent: :destroy
has_many :properties, through: :car_properties
end
class Property < ActiveRecord::Base
has_many :car_properties, dependent: :destroy
has_many :cars, through: :car_properties
end
class CarProperty < ActiveRecord::Base
belongs_to :car
belongs_to :property
end
如果您有很多属性并希望在逻辑上将它们分开,那么为每个属性创建单独的模型。与Engine
,Tire
,Glass
一样。每个模型都包含属性变体。然后为每个属性创建一个表以将其连接到汽车。与CarEngine
,CarGlass
一样。它将包含car_id
和property_id
(engine_id
,glass_id
)。