我有以下三种模型(大规模简化):
class A < ActiveRecord::Base
has_many :bs
has_many :cs, :through => :bs
end
class B < ActiveRecord::Base
belongs_to :a
has_many :cs
end
class C < ActiveRecord::Base
belongs_to :b
end
Run Code Online (Sandbox Code Playgroud)
似乎A.cs在第一次使用时被缓存(每个对象),而我真的不喜欢它.
这是一个突出问题的控制台会话(已经删除了绒毛)
rails console
001 > b = B.create
002 > c = C.new
003 > c.b = b
004 > c.save
005 > a = A.create
006 > a.bs << b
007 > a.cs
=> [#<C id: 1, b_id: 1>]
Run Code Online (Sandbox Code Playgroud)
这确实如你所料.a.cs很好地通过a.bs关系.
008 > a2 = A.create
009 > …Run Code Online (Sandbox Code Playgroud)