Ассоциация Rails own_to, не может получить доступ к атрибутам владельца, если они являются частью коллекции?

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

  •  18-09-2019
  •  | 
  •  

Вопрос

У меня есть объект, мяч, который принадлежит девушке, у которой может быть много мячей.По большей части все работает, но если я попытаюсь распечатать имена девочек через:

@balls.each do |b|
    b.girl.name
end

Я получаю следующую ошибку:

"undefined method `name' for nil:NilClass"

Что меня действительно смущает.Если я скажу b.girl.class, я получу это как экземпляр Girl, и это нормально.То есть это не «NillClass».

Мало того, если я просто попробую это для любого Бала и скажу

@ball.girl.name

Я в полном порядке.

Что меня смущает в коллекции Шариков?

Редактировать:

Конкретно это происходит, на мой взгляд.Сейчас я проверяю, происходит ли это и в контроллере.

Это было полезно?

Решение

У вас есть экземпляр Ball который не имеет связанного Girl.Вы захотите проверить, чтобы убедиться, что girl не nil прежде чем получить доступ к ней name атрибут.

@balls.each do |b|
  b.girl.name unless b.girl.nil? 
end

Другие советы

Дангит, ладно, неважно.Проблема заключалась в том, что по какой-то причине у некоторых объектов «Мяч» на самом деле не было девочек (хотя у большинства они были, поэтому любой мяч, который я пробовал, работал нормально, но если я попытаюсь сделать их все, один из них потерпит неудачу, и ошибка просмотра только дайте знать, что что-то пошло не так, а не где)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top