Ассоциация Rails own_to, не может получить доступ к атрибутам владельца, если они являются частью коллекции?
-
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
Другие советы
Дангит, ладно, неважно.Проблема заключалась в том, что по какой-то причине у некоторых объектов «Мяч» на самом деле не было девочек (хотя у большинства они были, поэтому любой мяч, который я пробовал, работал нормально, но если я попытаюсь сделать их все, один из них потерпит неудачу, и ошибка просмотра только дайте знать, что что-то пошло не так, а не где)