0

使用此代码,我可以为来宾用户缓存页面

caches_page :show, :unless => :user_signed_in?

但目前我似乎无法找到一种仅将缓存页面呈现给客人的方法。

我知道您可以使用 javascript 来显示页面的不同部分,这些部分仅保留给登录用户,但我的应用程序有点复杂,页面上有许多不同的元素,要么保留给登录用户或来宾,而不是甚至提到我在使用 turbolinks 或 pjax 时必须投入的时间来解决这个问题。片段缓存似乎是一个不错的方法,但我想先知道这在 Rails 3.xx 中是否可行。这似乎很简单,但我不确定..


你如何在 Rails 中只向访客显示缓存页面?

提前致谢。

4

1 回答 1

1

引用 Rails 指南

页面缓存的问题之一是您不能将它用于需要以某种方式限制访问的页面。这就是 Action Caching 的用武之地。Action Caching 的工作方式与 Page Caching 类似,不同之处在于传入的 Web 请求确实从 Web 服务器发送到 Rails 堆栈和 Action Pack,以便在提供缓存之前可以在其上运行过滤器。这允许运行身份验证和其他限制,同时仍提供缓存副本的输出结果。

所以,简单的答案是你应该改用这个

caches_action :show, :unless => :user_signed_in?

以便authenticate_user!在过滤器能够首先运行之前。

于 2013-07-31T16:21:24.857 回答