用will_paginate或Kaminari可以与范围和CanCanCan分页。 How to do pagination with cancan?用CanCan块分页
但是,这只解释了如果你的CanCan能力使用哈希如何做到这一点。如果你使用一个块,这将不起作用。我理解这一点,因为哈希转换为SQL语句。我似乎无法想象用block语句来做这件事的方法。
例如:
can :read, Shipment do |shipment|
user.client_ids.include? shipment.client_id
end
用户只能看货,如果客户在他们的客户名单。
@shipments = Shipment.ransack(params[:q]).result.uniq.paginate(page: params[:page]).select { |shipment| can? :show, shipment }
一种方法来做到这一点,并返回您的记录数组。但will_paginate需要分页对象。
<%= will_paginate @shipments %>
will_paginate将barf全部。也许这会在Kaminari工作?
谢谢!