Trilhos belongs_to associação, não pode atributos do proprietário de acesso quando parte de uma coleção?
-
18-09-2019 - |
Pergunta
Eu tenho um objecto, Bola, que belongs_to uma menina, que pode have_many bolas. Tudo funciona para a maior parte, mas se eu tentar imprimir o nome das meninas via:
@balls.each do |b|
b.girl.name
end
Eu recebo o seguinte erro:
"undefined method `name' for nil:NilClass"
O que realmente me confunde. Se eu disser b.girl.class, eu entendo como uma instância de menina, muito bem. Ou seja, ele não é "NillClass".
Não só isso, se eu apenas experimentar por qualquer bola, e dizer
@ball.girl.name
Estou perfeitamente bem.
O que é sobre uma coleção de bolas que está me estragar?
Editar:
Especificamente isso está acontecendo na minha opinião. Estou a fazer o teste agora para ver se isso acontece no controlador também.
Solução
Você tem uma instância de Ball
que não tem um Girl
associado. Você vai querer verificar para se certificar de que girl
não é nil
antes de acessar seu atributo name
.
@balls.each do |b|
b.girl.name unless b.girl.nil?
end
Outras dicas
dangit, tudo bem, não importa. A questão era que, por alguma razão algum objeto Bola realmente não tem meninas (embora a maioria fez, então qualquer bola que eu tentei funcionou bem, mas se eu tentasse fazer todos eles, um deles seria um fracasso, eo erro vista única deixe-me saber que algo deu errado, não onde)