2017-01-23 70 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的關係。