Pergunta

No meu aplicativo Rails, tenho uma hierarquia de vários níveis do seguinte tipo:

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

Então eu tenho uma classe referenciando o nível intermediário como assim:

class Garage < ActiveRecord::Base
  has_many :road_vehicles
end

Neste exemplo simplificado, dei à tabela de veículos uma coluna de tipo para ativar a herança de tabela única. Além disso, ele contém uma coluna GARAGE_ID, para ativar o relacionamento Has_Many. Quando crio uma nova garagem e adiciono carros e ônibus, todos são adicionados ao banco de dados conforme o esperado. No entanto, quando eu recuperar o objeto de garagem e inspecionar a coleção Road_vehicles, ele está vazio. Alguém pode me dizer o que estou fazendo de errado?

Foi útil?

Solução

Ao configurar associações com modelos de herança de tabela única, você precisa consultar o modelo pai para que as associações possam inferir um nome de tabela. Então, em seu Garage aula que você precisa:

has_many :vehicles

Se você deseja restringir a associação a RoadVehicles, você pode adicionar condições:

has_many :vehicles, :conditions => {:type => ['Car', 'Bus']}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top