2010-03-03 4 views
1

belongs_to 관계가 계속 존재하지 않는 모델로 Ruby on Rails 앱에 문제가 있습니다. 다음과 같은 모델을 감안할 때 Rails에서 belongs_to 관계에 대해 nil이 발생하지 않는 이유는 무엇입니까?

: 이제

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는 nil입니다.

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 테이블에서 크기가 하나입니까?

만약 그렇다면, 이것은 루비의 예약어로, 배열의 길이를 반환하는 방법입니다.

모든 섀시에 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 : description '설명에 사용합니다 : NilClass"오류 – y0mbo

+0

물론, 마이그레이션에서 키를 놓친 상태에서 데이터를 스크롤 할 때 NULL 값을 보지 못했습니다. 감사! – y0mbo

+0

비슷한 문제가 있습니다 ...하지만 데이터가 맞다는 것이 확실합니다 .... "키를 놓친"것이 무엇을 의미합니까? 섀시 중 일부가 널이라는 것을 의미합니까? 아니면 크기 중 일부가 null입니까? 나를 위해, 내가 속한 대상의 클래스에 요청하면, 작동하지만, 그 대상의 속성을 요청하면, 그것은 nill 클래스라고합니다. – Jenny