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?

¿Fue útil?

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 %>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top