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

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top