代码之家  ›  专栏  ›  技术社区  ›  Pascal Lindelauf

具有多个层次结构和单表继承

  •  6
  • Pascal Lindelauf  · 技术社区  · 15 年前

    在我的Rails应用程序中,我有以下类型的多级层次结构:

    class Vehicle < ActiveRecord::Base end
    class RoadVehicle < Vehicle end
    class Car < RoadVehicle end
    class Buss < RoadVehicle end
    

    然后我有一个类引用中间层,如下所示:

    class Garage < ActiveRecord::Base
      has_many :road_vehicles
    end
    

    在这个简化的示例中,我为Vehicles表提供了一个类型列,以启用单表继承。此外,它还包含一个车库ID列,以启用has-many关系。当我创建一个新的车库并添加汽车和公共汽车时,所有这些都会按预期添加到数据库中。但是,当我稍后检索车库对象并检查道路车辆收集时,它是空的。有人能告诉我我做错了什么吗?

    1 回复  |  直到 15 年前
        1
  •  6
  •   Alex Reisner    15 年前

    在设置与单表继承模型的关联时,需要引用父模型,以便关联可以推断表名。所以,在你的 Garage 你需要的课程:

    has_many :vehicles
    

    如果要将关联限制为 RoadVehicles ,可以添加条件:

    has_many :vehicles, :conditions => {:type => ['Car', 'Bus']}