我正在开始一个新的3.2 rails(最好是在MySQL上)项目,专注于销售不同类型的车辆。我们首先对汽车,摩托车和拖车进行建模。我正在考虑使用一个处理公共方面(例如is_enabled)的Vehicle类,然后为每个子类创建一个配置文件(比如has_one:motorcycle_profile)。
class Vehicle < ActiveRecord::Base
attr_accessor :is_enabled, :year #
end
class Motorcyle < Vehicle
has_one :motorcycle_profile
end
class MotorcyleProfile < ActiveRecord::Base
attr_accessor :front_tire # something motorcycle specific
end
...
这听起来像是一种合理的做法吗? STI会帮助解决这个或那个问题吗?
请求帮助
答案 0 :(得分:0)
我对这种网上商店软件的经验是,你很少需要一种产品与其他类型的产品不同。毕竟,它们都可以通过价格,产品代码和一些照片以相同的方式购买。但是,您可能希望在不同类型的产品中包含不同的属性。
例如,自行车上的燃油类型属性毫无意义,而汽车的踏板属性同样没有意义。我认为您应该考虑将共享属性放在普通列中,然后将自定义数据放入散列存储中,而不是创建不同的ActiveRecord模型,以便将不同的属性划分到不同的表中.Rails 4和Postgres支持这些存储。
它基本上允许您为每个单独的产品记录设置不同的属性集。