Avec will_paginate ou Kaminari, vous pouvez paginer avec des étendues et CanCanCan. Expliqué ici, How to do pagination with cancan?Pagination avec le bloc CanCan
Mais cela explique seulement comment le faire si votre capacité Cancan utilise des hachages. Cela ne fonctionnera pas si vous utilisez un bloc. Ce que je comprends parce que le hachage se traduit par une instruction SQL. Je ne peux pas sembler penser à un moyen de le faire avec une déclaration de bloc.
Par exemple:
can :read, Shipment do |shipment|
user.client_ids.include? shipment.client_id
end
L'utilisateur ne peut regarder l'expédition si le client est dans leur liste de clients.
@shipments = Shipment.ransack(params[:q]).result.uniq.paginate(page: params[:page]).select { |shipment| can? :show, shipment }
Une façon de le faire et retourner un tableau de vos enregistrements. Mais will_paginate requiert l'objet pagination.
<%= will_paginate @shipments %>
will_paginate va barf partout. Peut-être que cela fonctionnerait à Kaminari?
Merci!