Ruby on rails Rails加载关联

Ruby on rails Rails加载关联,ruby-on-rails,ruby,ruby-on-rails-4,rails-activerecord,Ruby On Rails,Ruby,Ruby On Rails 4,Rails Activerecord,我有两种型号:MSellingStaff和MPosition 我越来越 MSellingStaff的未定义方法“pos_short_name”:0x0000000651a5d0 当我尝试的时候 @sellers.first.m_position.pos_short_name 我越来越 nil:NilClass的未定义方法“pos_short_name” 在rails控制台中,我可以看到为 @sellers = MSellingStaff.includes(:m_position).all 是

我有两种型号:MSellingStaff和MPosition

我越来越


MSellingStaff的未定义方法“pos_short_name”:0x0000000651a5d0

当我尝试的时候

@sellers.first.m_position.pos_short_name
我越来越


nil:NilClass的未定义方法“pos_short_name”

在rails控制台中,我可以看到为

@sellers = MSellingStaff.includes(:m_position).all

MSellingStaff加载0.6ms选择m_销售人员。*从 m_销售人员位置加载0.2ms选择m_位置* 从m_位置,其中m_position.pos_id位于

我做错了什么?提前感谢

使用下面的

@sellers.first.m_position.pos_short_name
这是因为pos_short_name在m_position model中

您应该移动 :外键=>'emp\u pos\u id' to属于关系。

尝试将外键和类名添加到MSellingStaff模型


这意味着@sellers.first.m_position不存在。nil:NilClass的定义方法“pos_short_name”表示@sellers.first.m_position为nil-换句话说,您的MSellingStaff实例没有关联的MPosition@DavidAldridge奇怪的是,m_selling_Staff的emp_pos_id列中的所有值都在m_position的pos_id列中。您应该在m_selling_Staff表中具有pos_id,并且它应该根据您的关系引用m_position
@sellers = MSellingStaff.includes(:m_position).all
@sellers.first.m_position.pos_short_name
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