2012-05-17 4 views
0

Я использую Rails 2.3.11.принадлежит_to с has_many через

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 

Есть ли другой способ сделать это?

ответ

0

Я нашел выпуск,

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

#this worked 
a.reload 
a.modelc 

Его, казалось, проблема кэширования. Не могу полностью объяснить это, хотя

+0

Почему вы не упомянули этот код в своем вопросе? Это совершенно другой код, чем ваш вопрос. – Mischa

+0

Почему это другой вопрос? Я попросил подобное раньше: «a.modelC# is nil (why ??)» – user1021347