Trilhos belongs_to associação, não pode atributos do proprietário de acesso quando parte de uma coleção?

StackOverflow https://stackoverflow.com/questions/2411040

  •  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.

Foi útil?

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)

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