Frage

In meiner Rails-Anwendung Ich habe eine Multi-Level-Hierarchie der folgenden Art:

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

Dann habe ich eine Klasse Verweis auf die mittlere Ebene in etwa so:

class Garage < ActiveRecord::Base
  has_many :road_vehicles
end

In diesem vereinfachten Beispiel habe ich die Fahrzeuge Tabelle, die eine Spalte vom Typ gegeben einzelne Tabelle Vererbung zu ermöglichen. Darüber hinaus enthält es eine garage_id Spalte, die has_many Beziehung zu ermöglichen. Wenn ich eine neue Garage und füge Autos und Busse schaffen, die alle zu der Datenbank hinzugefügt bekommen, wie erwartet. Allerdings, wenn ich später die Garage Objekt abrufen und überprüfen Sie die road_vehicles Sammlung, ist es leer. Kann mir jemand sagen, was mache ich falsch?

War es hilfreich?

Lösung

Wenn Verbände Einrichtung mit einzelnen Tabellenvererbungsmodellen, müssen Sie das übergeordnete Modell beziehen, so die Verbände einen Tabellennamen ableiten können. Also, in Ihrer Garage Klasse benötigen Sie:

has_many :vehicles

Wenn Sie die Zuordnung zu RoadVehicles einschränken möchten, können Sie Bedingungen hinzufügen:

has_many :vehicles, :conditions => {:type => ['Car', 'Bus']}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top