小编Oli*_*ver的帖子

如何通过关系强制rails不使用has_many的缓存结果?

我有以下三种模型(大规模简化):

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)

caching ruby-on-rails has-many-through

11
推荐指数
1
解决办法
7100
查看次数

标签 统计

caching ×1

has-many-through ×1

ruby-on-rails ×1