Pourquoi ai-je nul pour une relation belongs_to dans Rails?
-
24-09-2019 - |
Question
Je vais avoir un problème dans mon application Ruby on Rails avec un modèle dans lequel une relation de belongs_to continue de se retrouver étant nulle.
Compte tenu des modèles suivants:
class Chassis < ActiveRecord::Base
belongs_to :model
belongs_to :chassis_size
end
class Model < ActiveRecord::Base
has_many :chassis
end
class ChassisSize < ActiveRecord::Base
has_many :chassis
end
Maintenant, je me attends dans mon index des châssis que je voyais à la fois le modèle et les données de chassis_size données:
<% @chassis.each do |chassis| %>
<%= chassis.id %><br />
<%= chassis.model.name %><br />
<%= chassis.chassis_size.size %><br />
<% end %>
Mais je reçois une erreur que le chassis_size.size est nulle:
You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.size
En regardant les données dans la base de données, tout semble correct.
Je ne sais pas pourquoi modèle fonctionne, mais chassis_size ne fonctionne pas. Qu'est-ce que je rate? Pourquoi ne pas les données de chassis_size semblent charger?
La solution
est la taille d'une colonne dans votre table chassis_sizes?
Si oui, c'est un mot réservé en rubis, car il est la méthode pour le retour de la longueur d'un tableau.
Est-ce que tous les châssis ont une chassis_size? Essayez ceci:
<% @chassis.each do |chassis| %>
<%= chassis.id %><br />
<%= chassis.model.name %><br />
<% if chassis.chassis_size %>
<%= chassis.chassis_size.description %>
<% else %>
No chassis_size exists for this chassis
<% end %><br />
<% end %>