如何在 Rails 中使用 will_paginate 和模型缓存?

How to use will_paginate with model caching in rails?

我的模型中有一个范围 (scope :short_listed, -> ....)。要列出索引页上的所有项目,我使用此代码:

@posts = Post.cached_short_listed.paginate(:page => params[:page])

post.rb

  def self.cached_short_listed
    Rails.cache.fetch([name, "short_listed"], expires_in: 5.minutes) do
      short_listed.to_a
    end
  end

我有这个错误

undefined method `paginate' for #<Array:

如果我删除 .paginate(:page => params[:page])<%= will_paginate....%> 一切正常。

如何使 will_paginate 使用模型缓存。

WillPaginate 默认不包含数组分页,但您可以包含它...

require 'will_paginate/array'

...在初始值设定项中。数组上的分页应该与 ActiveRecord::Relation.

上的分页几乎完全一样