我有两个模型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
我正在
未定义的方法`pos_short_name&#39;对于#MSellingStaff:0x0000000651a5d0
当我尝试
时@sellers.first.m_position.pos_short_name
我正在
未定义的方法`pos_short_name&#39;为零:NilClass
在rails控制台中,我可以看到为
生成的SQL@sellers = MSellingStaff.includes(:m_position).all
是
MSellingStaff负载(0.6ms)SELECT&#34; m_selling_staffs&#34;。* FROM &#34; m_selling_staffs&#34; MPosition Load(0.2ms)SELECT&#34; m_position&#34;。* FROM&#34; m_position&#34;在哪里&#34; m_position&#34;。&#34; pos_id&#34; IN(&#39;&#39;)
我做错了什么?提前谢谢
答案 0 :(得分:2)
尝试将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
答案 1 :(得分:0)
使用以下
@sellers.first.m_position.pos_short_name
这是因为pos_short_name在m_position模型中
答案 2 :(得分:0)
你应该搬家
:foreign_key => 'emp_pos_id'
to belongs_to relation。