我不太确定如何确保我的缓存正常工作,但我很确定它不是。我有一个带有索引操作的用户控制器,在创建新用户之前我一直在缓存它。这是代码:
UsersController < ApplicationController
caches_action :index
def index
@users = User.all
end
def create
expires_action :index
...
end
end
现在,当我访问index
操作时,在我的日志中,我看到:
Cached fragment hit: views/localhost:3000/users (0.0ms)
Filter chain halted as [#<ActionController::Filters::AroundFilter:0xe2fbd3 @identifier=nil, @kind=:filter, @options={:only=>#<Set: {"index", "new"}>, :if=>nil, :unless=>nil}, @method=#<Proc:0x186cb11@/Users/bradrobertson/.rvm/gems/jruby-1.5.3/gems/actionpack-2.3.10/lib/action_controller/caching/actions.rb:64>>] did_not_yield.
我不确定这filter chain halted ... did_not_yield
是怎么回事,而且我也看到select * from users
... 每次都被调用,这不是我所期望的。
有人可以告诉我这里发生了什么以及为什么这不符合我的预期吗?IE。当整个操作的输出应该被缓存时,为什么 User.all 会运行?