如何建立这种关系的模型

时间:2013-10-17 20:46:17

标签: ruby-on-rails activerecord ruby-on-rails-3.2

我正在开始一个新的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会帮助解决这个或那个问题吗?

请求帮助

1 个答案:

答案 0 :(得分:0)

我对这种网上商店软件的经验是,你很少需要一种产品与其他类型的产品不同。毕竟,它们都可以通过价格,产品代码和一些照片以相同的方式购买。但是,您可能希望在不同类型的产品中包含不同的属性。

例如,自行车上的燃油类型属性毫无意义,而汽车的踏板属性同样没有意义。我认为您应该考虑将共享属性放在普通列中,然后将自定义数据放入散列存储中,而不是创建不同的ActiveRecord模型,以便将不同的属性划分到不同的表中.Rails 4和Postgres支持这些存储。

它基本上允许您为每个单独的产品记录设置不同的属性集。