は私がm_position
に属性pos_short_name
を持つ2つのモデルMSellingStaff
とMPosition
Railsのイーガーローディング団体
#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
を持っています。 0x0000000651a5d0
と私は
@sellers.first.m_position.pos_short_name
をしようとしたとき、私は
を取得しています:私は@sellers = MSellingStaff.includes(:m_position).all
@sellers.first.pos_short_name
をしようとすると、私は
未定義のメソッド#MSellingStaffため `pos_short_name」を取得しています nilのための
未定義のメソッド `pos_short_name」:NilClass
レールコンソールでは、私はSQLが
@sellers = MSellingStaff.includes(:m_position).all
のために生成されたことがわかりますして
MSellingStaffロード(0.6msであります)SELECT "m_selling_staffs"。* FROM "m_selling_staffs" MPosition Load(0.2ms)SELECT "m_position"。* FROM "m_position" WHERE "m_positi on "" pos_id "IN( '')
私は間違っていますか?
"nilのための未定義のメソッド' pos_short_name」:NilClassは、" @のsellers.first.m_positionがnilであることを示している - つまり、あなたは関連するMPosition –
@DavidAldridgeはthatsの持っていないMSellingStaffのインスタンスを持っています奇妙なことに、 'm_selling_staffs'の' emp_pos_id'カラムのすべての値は 'm_position'の' pos_id'カラムにあります。 –
'm_selling_staffs'テーブルに' pos_id'を置く必要があります。そして、あなたの関係に従って 'm_position'を参照してください。 – Sravan