繁体   English   中英

Rails渴望加载协会

[英]Rails eager loading associations

我有两种型号MSellingStaffMPosition

#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_namem_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_keyclass_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM