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 会帮助解决这个或那个更多的问题吗?

谢谢帮助

4

1 回答 1

0

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

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

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

于 2013-10-17T21:00:59.413 回答