2017-01-23 75 views
1

我有两个型号MSellingStaffMPositionRails的渴望装载协会

#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 

我有一个属性m_positionpos_short_name。当我尝试

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

我越来越

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

,当我尝试

@sellers.first.m_position.pos_short_name 

我越来越

未定义的方法`pos_short_name”的零:NilClass

在导轨控制台I可以看到,对于

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

生成的SQL是

MSellingStaff负荷(0.6ms )SELECT “m_selling_staffs”。* FROM “m_selling_staffs” MPosition负荷(0.2ms的)选择 “m_position”。* FROM “m_position” WHERE“m_positi on“。”pos_id“IN('')

我在做什么错?下面

@sellers.first.m_position.pos_short_name 

在此先感谢

+0

“未定义的方法'pos_short_name”的零:NilClass”表示@ sellers.first.m_position是零 - 换句话说,你有没有相关的MPosition –

+0

@DavidAldridge多数民众赞成在MSellingStaff的情况下,奇怪的事情,在''的m_selling_staffs' emp_pos_id'列中的所有值都存在于''的m_position' –

+0

pos_id'列,你应该有''在表m_selling_staffs'和pos_id'它应该是指'm_position'根据你的关系 – Sravan

回答

2

尝试添加foreign_keyclass_nameMSellingStaff模型。

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 
+0

这就实现了。非常感谢 –

+0

很高兴帮助你,祝你有个美好的一天。 :-) – Sravan

0

使用。这是因为pos_short_name是m_position模型

+0

这意味着@ sellers.first.m_position不存在 –

0

你应该将 :foreign_key => 'emp_pos_id' 到belongs_to的关系。