¿Por qué recibo nula para una relación belongs_to en Rails?
-
24-09-2019 - |
Pregunta
Estoy teniendo un problema en mi Ruby on Rails aplicación con un modelo en el que una relación belongs_to mantiene llegando a ser nula.
Teniendo en cuenta los siguientes modelos:
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
Ahora, yo esperaría que en mi opinión índice de chasis que iba a ver tanto los datos chassis_size dado el modelo y:
<% @chassis.each do |chassis| %>
<%= chassis.id %><br />
<%= chassis.model.name %><br />
<%= chassis.chassis_size.size %><br />
<% end %>
Pero me sale un error que el chassis_size.size es nula:
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 cuanto a los datos en la base de datos, todo parece ser correcto.
No estoy seguro de qué modelo funciona, pero chassis_size no lo hace. ¿Qué me estoy perdiendo? ¿Por qué no los datos chassis_size parecen carga?
Solución
es el tamaño de una columna en la tabla de chassis_sizes?
Si es así, esta es una palabra reservada en rubí, ya que es el método para el retorno de la longitud de una matriz.
¿Cada chasis tiene un chassis_size? Prueba esto:
<% @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 %>