首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails 4 cache_digests未捕获更改

Rails 4 cache_digests未捕获更改
EN

Stack Overflow用户
提问于 2014-02-25 15:11:43
回答 1查看 67关注 0票数 1

我试图在Rails 4中使用片段缓存来缓存我的导航菜单。

模型

代码语言:javascript
复制
class Page < ActiveRecord::Base

  belongs_to :parent, :class_name => 'Page', :touch => true

  has_many :children, :class_name => 'Page', 
    :foreign_key => 'parent_id'

  ...

end

这部分工作正常。每当我更新嵌套页面时,所有父级的updated_at值都会被更改。但是不会为该组页面编写新的缓存视图文件。

导航视图

代码语言:javascript
复制
<nav>
  <ul>
    <% Page.level_1.each do |page_1| %>
      <% cache page_1 do %>
      <li>
        <%= link_to page_1.title, level_1_page_path(page_1.slug) %>
        <% if page_1.children.count > 0 %>
          # continue nesting children
          ...
        <% end %>
      </li>
      <% end %>
    <% end %>
  </ul>
</nav>

为什么Rails没有识别页面中的更改?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-25 15:58:17

原来我的一切都是正确的,但我的模型的范围:

代码语言:javascript
复制
scope :level_1, where(:level => 1)

默认情况下被缓存,因为它不包含lambda。将范围改为:

代码语言:javascript
复制
scope :level_1, -> { where(:level => 1) }

解决了我的问题,现在缓存摘要工作得很好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22018298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档