2013-10-17 67 views
0

我开始着手销售不同类型的车辆的新的3.2 rails(理想情况下喜欢在MySQL上)项目。我们从模型汽车,摩托车和拖车开始。我正在考虑让Vehicle类处理公共方面(如is_enabled),然后为每个子类(如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会帮助解决这个或那个问题,而不是它的价值?

THX的帮助

回答

0

我用这种网上商店软件的经验是,你罕需要1种产品的表现比其他类型的产品不同。毕竟,他们都可以用价格,产品代码和一些照片以几乎相同的方式购买。但是,您可能希望在不同种类的产品中包含不同的属性。

例如,自行车上的燃料类型属性毫无意义,而汽车上的踏板属性同样毫无意义。与其创建不同的ActiveRecord模型来将不同的属性拼凑到不同的表中,我认为您应该考虑将共享属性放在普通列中,然后将自定义数据放入哈希存储中,该存储由Rails 4和Postgres支持。

它基本上允许您为每个单独的产品记录拥有一组不同的属性。

+0

thx Niels,我得到你要去的那个概念。老实说,我还没有跳到Rails 4和Postgres(可能会做3.2和MySQL)。但我会研究这些建议。我会有点担心,但在散列存储中搜索,范围等。另外,对于新开发者来说可能有点不透明。但是这些事情随着时间而改变。 – timpone

+0

Postgres为查询个人自定义属性提供支持。 –