Pergunta

Um pouco de uma pergunta novato em associações trilhos.

Eu tenho um modelo Bug, e um modelo de Estado. Status é basicamente apenas uma tabela de pares de chave / valor. Fora das opções disponíveis, gostaria de dizer Estado Bug has_one faz mais sentido. No entanto, de acordo com a este

Conteúdo belongs_to ContentTemplate. Ir para trás e olhar em como eu descrevi a problema, e você verá que ele funciona. Com belongs_to, a mesa aceita responsabilidade para a chave estrangeira. então Conteúdo tem um content_template_id. E O ContentTemplate não precisa de nada. Eu possa apontar-lo à vontade. Feito.

Bug belongs_to Estado seria mais apropriado (desde Bug deve tomar a chave estrangeira). Semanticamente, o seu exemplo faz sentido, mas o meu faz nenhum. Este é apenas um capricho de trilhos, onde, nesta situação, parece estranho, ou sou eu não entender uma coisa / fazendo errado?

Foi útil?

Solução

Sim, eu acho que você acabou de encontrar um cenário um pouco de aparência estranha em Rails. Suponho que poderia ser útil para visualizar "status" como uma espécie de categoria a que o bug pertence -. Em que a luz, faz sentido

Outras dicas

TABLE:
    Bug
    id integer
    desc string
    status_id integer fk

    Status
    id integer
    desc string

RAILS MODEL:
    Bug
    belongs_to :status

    Status
    has_many :bugs

Você não explicou exatamente que tipo de relação entre Bug e status que você gostaria de ter, mas eu suponho que você está interessado em uma das seguintes opções:

  • um-para-muitos: neste caso, não deve haver has_many na classe Bug e belongs_to na classe Status,
  • one-to-one:., Neste caso, não deve haver has_one na classe Bug e belongs_to na classe Estado

Em ambos os casos Status contém a chave estrangeira. No segundo caso, a formulação é um pouco estranho, devido ao fato de que a relação de um-para-um é, de facto, assimétrica (deve haver um FK apenas de um lado).

Se o Status é apenas um / table key-value look-up, parece que você pode querer um relação habtm (has_and_belongs_to_many) entre o estado e erro. Com habtm, o que você vai acabar com é um bugs_statuses juntar a tabela que tem bug_id e status_id colunas, juntamente com os seus erros e status tabelas.

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