【问题标题】:Rails 4 cache_digests Not Catching ChangesRails 4 cache_digests 没有捕捉到变化
【发布时间】:2014-02-25 15:11:43
【问题描述】:

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

型号

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 值都会更改。但是没有写入该组页面的新缓存视图文件。

导航视图

<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 不能识别页面中的变化?

【问题讨论】:

    标签: ruby-on-rails caching ruby-on-rails-4


    【解决方案1】:

    事实证明我的一切都是正确的,但是我的模型的范围:

    scope :level_1, where(:level => 1)
    

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

    scope :level_1, -> { where(:level => 1) }
    

    解决了我的问题,现在缓存摘要可以完美运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-10
      • 1970-01-01
      • 1970-01-01
      • 2016-07-21
      • 2016-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多