Rails - 多个表之间的继承

时间:2012-06-24 18:21:13

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1

我正在试图找出实现这个的rails方式。我有一张车辆类型的桌子

create_table :vehicles do |t|
    t.string make
    t.integer model_year
    t.string type #truck, motorcycle, sedan, etc
end

和那辆车实际存在的实例

create_table :vehicle_instances do |t|
    t.integer vehicle #links to above table
    t.integer owner
    t.integer bought_date
    t.integer mileage
    t.string type #truck, motorcycle, sedan, etc, but with different methods than above
end
  1. 我希望:将车辆表中的类型移动到vehicle_instances表。我该怎么做呢?
  2. 可能存在类型在vehicle_instances表中更具体的情况(即,在车辆中键入:'motorcyle',但在实例中键入:'dirt_motorcycle'或类型:'road_motorcycle')。有没有办法在实例化Vehicle时捕获Motorcycle类下的那些,但在实例化VehicleInstance时在更具体的类下?
  3. 谢谢!

1 个答案:

答案 0 :(得分:0)

  1. 我已将其保留为父级的属性,但如果必须...在vehicleInstance中执行此操作:

    before_save:pull_type

    def pull_type     self.type = self.vechile.type   端

  2. 此外,将车辆列更改为vehicle_id - 这是预期的语法并将停止关系冲突。

    1. 我个人会在“子类型”的实例中添加一列:[dirt,race,nil] 子类型的选项将基于父类型。