在我的 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
在这个简化的示例中,我为车辆表提供了一个类型列以启用单表继承。此外,它包含一个garage_id 列,以启用has_many 关系。当我创建一个新车库并添加汽车和公共(public)汽车时,所有这些都按预期添加到数据库中。但是,当我稍后检索车库对象并检查 road_vehicles 集合时,它是空的。谁能告诉我我做错了什么?
最佳答案
在使用单表继承模型设置关联时,您需要引用父模型,以便关联可以推断出表名。所以,在你的 Garage
你需要的类(class):
has_many :vehicles
如果要将关联限制为
RoadVehicles
,可以添加条件:has_many :vehicles, :conditions => {:type => ['Car', 'Bus']}
关于ruby-on-rails - has_many 具有多级层次结构和单表继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2136324/