2014-12-21 2 views
1

내가 협회와 모델 공급 업체가 belongs_to :레일 4 열망 로딩 has_one 및

has_one :school, foreign_key: "school_vendor_id" 

을 나는 협회와 모델 학교가이 :

@vendors = Vendor.includes(:school).where(:business_id=>@business.id) 
:

belongs_to :vendor, foreign_key: "school_vendor_id" 

나는 열망로드를 수행 한

보기에 문제가 있습니다. 내가 <%= v.school.inspect %> 할 경우

<% @vendors.each do |v| %><br/> 
<%= v.vendor_name %><br/> 
**<%= v.school.id %>** //Gives an error 
undefined method `id' for nil:NilClass 

, 나는 내가 학교 기록을 표시하는 방법을 알아낼 수 없습니다 다음과 같은 결과

#<School id: 1, school_vendor_id: 1................. 

를 얻을.

답변

1

문제는 관련 학교가없는 업체가 있다는 것입니다.

따라서 v.school인 경우 벤더에 대해 오류가 발생하고 v.school.id 일 경우 오류가 발생합니다.

귀하의 v.school.inspect다른의 업체이기 때문에 학교를 반품하고 있습니다.

이 문제를 해결하려면보기에서 v.school.try(:id) || 'No associated school'을 사용하십시오. 그러면 귀하는 어떤 공급 업체에 학교가 없는지를 알 수 있습니다.

Rails Console에서 다음을 수행하여 학교가없는 업체를 확인할 수도 있습니다.

Vendor.where("id NOT IN (?)", School.pluck(:vendor_id)) 
+0

감사합니다. 이 작동합니다. –