[英]Rails eager loading associations
我有两种型号MSellingStaff
和MPosition
#m_selling_staff.rb
class MSellingStaff < ActiveRecord::Base
belongs_to :m_position
end
#m_position.rb
class MPosition < ActiveRecord::Base
self.primary_key ='pos_id'
has_many :m_selling_staffs, :foreign_key => 'emp_pos_id'
end
我有一个属性pos_short_name
在m_position
。 当我尝试
@sellers = MSellingStaff.includes(:m_position).all
@sellers.first.pos_short_name
我正进入(状态
#MSellingStaff:0x0000000651a5d0的未定义方法pos_short_name
当我尝试
@sellers.first.m_position.pos_short_name
我正进入(状态
nil:NilClass的未定义方法pos_short_name
在rails控制台中,我可以看到为
@sellers = MSellingStaff.includes(:m_position).all
是
MSelling工作人员负载(0.6ms)选择“ m_selling_staffs”。*从“ m_selling_staffs” MPosition负载(0.2ms)选择“ m_position”。*从“ m_position”到“ m_position”。“ pos_id” IN(“)
我究竟做错了什么? 提前致谢
尝试将foreign_key
和class_name
添加到MSellingStaff
模型。
class MSellingStaff < ActiveRecord::Base
belongs_to :m_position, :foreign_key => 'emp_pos_id', :class_name => "MPosition"
end
class MPosition < ActiveRecord::Base
self.primary_key ='pos_id'
has_many :m_selling_staffs, :foreign_key => 'emp_pos_id'
end
使用以下
@sellers.first.m_position.pos_short_name
这是因为pos_short_name在m_position模型中
您应该将:foreign_key => 'emp_pos_id'
移至:foreign_key => 'emp_pos_id'
关系。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.