Warum erhalte ich null für eine belongs_to Beziehung in Rails?
-
24-09-2019 - |
Frage
Ich bin auf Rails-Anwendung mit einem Modell ein Problem in meinem Rubin mit dem eine belongs_to Beziehung zu Null enden hält.
In Anbetracht der folgenden Modelle:
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
Nun würde ich in meinem Chassis Indexansicht erwarte ich, dass das Modell sowohl sehen würde und die chassis_size Daten gegeben:
<% @chassis.each do |chassis| %>
<%= chassis.id %><br />
<%= chassis.model.name %><br />
<%= chassis.chassis_size.size %><br />
<% end %>
Aber ich erhalte eine Fehlermeldung, dass der chassis_size.size ist gleich Null:
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
Mit Blick auf den Daten in der Datenbank, wird alles korrekt sein.
Ich bin nicht sicher, warum Modell funktioniert aber chassis_size nicht. Was vermisse ich? Warum nicht die chassis_size Daten erscheinen Last?
Lösung
Ist Größe eine Spalte in der Tabelle chassis_sizes?
Wenn ja, ist dies ein reserviertes Wort in Rubin, wie es das Verfahren zur Rückführung der Länge eines Arrays ist.
Hat jeder Chassis ein chassis_size? Versuchen Sie folgendes:
<% @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 %>