0

Rails 2.3.11 を使用しています。

class ModelA < ActiveRecord::Base
  belongs_to :modelb
  has_one :modelc, :through => :modelb
end

class ModelB < ActiveRecord::Base
  belongs_to :modelc
end

class ModelC < ActiveRecord::Base
  has_many :modelb
end

a = ModelA.find(x)
a.modelc # is nil (why??)
a.modelb.modelc # works fine

これを行う別の方法はありますか?

4

1 に答える 1

0

私は問題を見つけました、

inst_modelb = Factory(:modelb, :modelc => Factory(:modelc))
a=Factory(:modela, :modelb => inst_modelb)
a.modelc # was nil

#this worked
a.reload
a.modelc

キャッシングの問題のようでした。しかし、それを完全に推論することはできません

于 2012-05-17T14:08:03.010 に答える