2010-03-03 3 views
1

У меня проблема с моим приложением Ruby on Rails с моделью, в которой отношения belongs_to остаются в конечном итоге равными нулю.Почему я получаю nil для отношений belongs_to в Rails?

Учитывая следующие модели:

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 

Теперь, я бы ожидать, на мой взгляд, индекс шасси я хотел бы видеть, как модель и данные chassis_size Дано:

<% @chassis.each do |chassis| %> 
    <%= chassis.id %><br /> 
    <%= chassis.model.name %><br /> 
    <%= chassis.chassis_size.size %><br /> 
<% end %> 

Но я получаю сообщение об ошибке что chassis_size.size равна нулю:

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  

Глядя на данные в базе данных, все представляется правильным.

Я не уверен, почему работает модель, но chassis_size этого не делает. Что мне не хватает? Почему данные chassis_size не загружаются?

ответ

0

Это размер столбца в таблице chassis_sizes?

Если это так, это зарезервированное слово в ruby, так как это метод для возврата длины массива.

У каждого шасси есть chassis_size? Попробуйте следующее:

<% @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 %> 
+0

Да, размер столбца. Я принимаю, что я должен переименовать его в нечто другое ... BUT ... У меня есть столбец описания на этой таблице, и с помощью этого получается «неопределенный метод« описание »для ошибки nil: NilClass» – y0mbo

+0

Разумеется, я пропустил ключ в миграции и не видел значения NULL при прокрутке данных. Благодаря! – y0mbo

+0

У меня такая же проблема ... но я уверен, что данные верны ... что вы имеете в виду, что вы «пропустили ключ»? Вы имеете в виду, что некоторые из шасси Null? Или некоторые из их размеров равны нулю? Для меня, если я задаю класс объекта, к которому он принадлежит, он работает, но если я попрошу атрибут этого объекта, он говорит, что это класс nill. – Jenny

 Смежные вопросы

  • Нет связанных вопросов^_^