gpt4 book ai didi

ruby-on-rails - 如何使用具有多个子类别的项目对表进行建模?

转载 作者:行者123 更新时间:2023-11-29 13:31:29 25 4
gpt4 key购买 nike

我需要一些建议。我在建模数据库方面还很陌生,所以我想知道什么是建模数据库最方便的方法,这会让我的生活更轻松。我有一个 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

这是推荐的方法还是其他一些关系更合适?谢谢!

最佳答案

您可以在一张表中存储汽车(具有 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

如果您有很多属性并希望在逻辑上将它们分开,则为每个属性创建单独的模型。像 EngineTireGlass。每个模型都将包含属性变体。然后为每个属性创建一个表以将其连接到汽车。像 CarEngineCarGlass。它将包含 car_idproperty_id(engine_idglass_id)。

关于ruby-on-rails - 如何使用具有多个子类别的项目对表进行建模?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22118039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com