我有一个关联的模型供应商:
has_one :school, foreign_key: "school_vendor_id"
我有一个模范学校和协会:
belongs_to :vendor, foreign_key: "school_vendor_id"
我已经做了急切的加载:
@vendors = Vendor.includes(:school).where(:business_id=>@business.id)
我的问题出在观点中。
<% @vendors.each do |v| %><br/>
<%= v.vendor_name %><br/>
**<%= v.school.id %>** //Gives an error
undefined method `id' for nil:NilClass
如果我<%= v.school.inspect %>
,我会得到以下结果
#<School id: 1, school_vendor_id: 1.................
我无法弄清楚如何显示学校记录。
答案 0 :(得分:1)
问题是你有一个没有相关学校的供应商。
因此v.school
返回nil而v.school.id
会为特定供应商引发错误。
您的v.school.inspect
正在返校,因为它适用于其他供应商。
要解决此问题,请在视图中使用v.school.try(:id) || 'No associated school'
。然后在您看来,您将能够看到哪些供应商没有学校。
您还可以在Rails控制台中执行以下操作,以查看哪些供应商没有学校。
Vendor.where("id NOT IN (?)", School.pluck(:vendor_id))