Я только что перешел на Pundit из CanCan. Я не уверен в парочке вещей и о том, как лучше всего использовать Пандит. Например.
Если у вас есть ресурс, который может иметь несколько родительских объектов, например, можно сказать, что цель принадлежит ученику и преподавателю. Поэтому у ученика может быть много голов, и у инструктора может быть много целей. В действии указателя контроллера вы можете:
if params[:student_id].present?
@account = Student.find(params[:student_id])
@goals = @account.goals
elsif params[:instructor_id].present?
@account Instructor.find(params[:instructor_id])
@goals = @account.goals
end
параметры не используются внутри политик, поэтому здесь нужно сделать логику. Я думаю. Для того, что я могу сказать, если вы пропустите policy_scope, вы получите несанкционированную ошибку при просмотре страницы индекса для целей.
Вы:
@goals = policy_scope(@account.goals)
ИЛИ
@goals = policy_scope(Goal.scoped).where( account_id: @account.id)
Что происходит, когда вы бросаете кучу включений в микс?
@example = policy_scoped(@school.courses.includes(:account => :user, :teacher ))
Или когда нужно заказать... это правильно? policy_scope (Issue.scoped).order( "created_at desc" )
При использовании областей: Что такое: область здесь? Является ли: scope экземпляр модели оценивается? Я попытался получить доступ к своим атрибутам через: scope, но не работал.
class Scope < Struct.new(:user, :scope)