0

我试图找出实现这一点的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. 我希望将车辆表中的 :type 移动到 vehicle_instances 表中。我该怎么做呢?
  2. 在某些情况下,vehicle_instances 表中的类型更具体(即车辆中的类型:'motorcyle',但实例中的类型:'dirt_motorcycle' 或类型:'road_motorcycle')。有没有办法在实例化 Vehicle 时捕获 Motorcycle 类下的两者,但在实例化 VehicleInstance 时捕获更具体的类?

谢谢!

4

1 回答 1

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

    before_save :pull_type

    def pull_type self.type = self.vechile.type end

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

  1. 就我个人而言,我会在“子类型”的实例中添加一列:[dirt, race, nil] 子类型的选项将基于父类型。
于 2012-06-24T21:54:55.720 回答