2

我刚刚开始在 Rails 4 应用程序中使用 Pundit gem 进行授权。

一切都很好,但我可以了解分页在索引操作中的工作方式。

我的控制器的索引操作如下所示:

def index
   @records = policy_scope(Record)
end

我的 RecordPolicy 中的 Scope 类然后去:

 class Scope < Struct.new(:user, :scope)
    def resolve
      if user.has_role? :admin
        # get all records
      else
        # get user specific records
      end
    end
  end

这一切都很好。我想知道我将如何处理分页。当然,这涉及传入页面参数等,我不确定如何在不继承 Scope 类的情况下执行此操作。

4

2 回答 2

3

policy_scope(Record)方法返回一个ActiveRecord::Relation对象,然后您可以链接分页方法,具体取决于您使用的 gem ( will_paginate, kaminari)。

def index
  @records = policy_scope(Record).paginate(params[:page])
end
于 2014-08-31T15:07:57.483 回答
1

对于谷歌人。上面的答案在技术上是正确的,但是对于 Kaminari 的最新版本(我的是 0.17),链接的方法是page(params[:page])

于 2017-01-30T10:25:28.057 回答