Pas*_*auf 6 ruby-on-rails associations single-table-inheritance
在我的Rails应用程序中,我有以下类型的多级层次结构:
class Vehicle < ActiveRecord::Base end
class RoadVehicle < Vehicle end
class Car < RoadVehicle end
class Buss < RoadVehicle end
Run Code Online (Sandbox Code Playgroud)
然后我有一个引用中间级别的类,如下所示:
class Garage < ActiveRecord::Base
has_many :road_vehicles
end
Run Code Online (Sandbox Code Playgroud)
在这个简化的示例中,我为vehicles表提供了一个类型列以启用单表继承.此外,它包含garage_id列,以启用has_many关系.当我创建一个新车库并添加汽车和公共汽车时,所有都会按预期添加到数据库中.但是,当我稍后检索车库对象并检查road_vehicles集合时,它是空的.谁能告诉我我做错了什么?
在设置与单表继承模型的关联时,需要引用父模型,以便关联可以推断表名.所以,在你的Garage课堂上你需要:
has_many :vehicles
Run Code Online (Sandbox Code Playgroud)
如果要限制关联RoadVehicles,可以添加条件:
has_many :vehicles, :conditions => {:type => ['Car', 'Bus']}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1950 次 |
| 最近记录: |