Chave secundária Datamapper
-
20-09-2019 - |
Pergunta
Estou usando o Datamapper em um aplicativo Ruby e estou enfrentando um problema que não entendo.
Eu tenho um modelo de apartamento e um modelo de localização. Um apartamento está em um determinado local e vários apartamentos podem estar no mesmo local. Isso normalmente descreveu um relacionamento 1-N (eu acho :-))
Minha garra é que, na tabela SQL do apartamento, preciso de um local_ID, mas não quero nenhum indicador de apartamento na tabela de localização. Para mim, a localização deve viver por conta própria e não deve fazer referência ao apartamento.
Na aula de rubi do apartamento, adicionei:
has n, Location
Mas então ele cria um appartment_id dentro da classe Ruby Location, que eu não quero.
Você teria alguma idéia?
Muito obrigado, Luc
Solução
É um relacionamento um para muitos, mas para o modelo de localização, não para o apartamento. Isso significa que a localização pode ter muitos apartamentos e é o que você deseja, portanto, o modelo de apartamento terá Location_ID. O que você fez é que você disse ao Datamapper que seu apartamento possui muitos locais, por isso adicionou appartment_id ao local.
Para consertar, você pode adicionar:
has n, Appartment
na aula de localização.
Não conheço o Datamapper, mas em trilhos você pode defini -lo nos dois modelos. No apartamento, você define algo como:
belongs_to Location
E no local, você adiciona algo como o meu primeiro exemplo.
Outras dicas
Eu apenas diria
class Apartment
belongs_to :location
end
class Location
has n, :apartments
end
Isso permitiria que você faça referência ao @apartamento.Location e @Location.APARTMIGS