Как бы вы разрешили отдельные атрибуты при просмотре - PullRequest
0 голосов
/ 10 июля 2019

Нужно разрешить определенным пользователям иметь возможность просматривать поля, а не просто иметь ограничения для всего объекта

1 Ответ

1 голос
/ 10 июля 2019

Попытка помочь вам, как часть документации:

С Pundit вы можете контролировать, какие атрибуты пользователь имеет доступ к обновлению через ваши политики.Вы можете настроить метод allow_attributes в своей политике следующим образом:

# app/policies/post_policy.rb
 class PostPolicy < ApplicationPolicy
     def permitted_attributes
         if user.admin? || user.owner_of?(post)
             [:title, :body, :tag_list]
         else
             [:tag_list]
         end
    end
end

Существует также помощник, который может управлять разрешениями для каждого действия

permitted_attributes(record, action = action_name), который можно использовать вместо.

Или, наиболее вероятно, вы хотите использовать области, которые определяют доступ к определенным атрибутам.

Из документации по областям:

Часто вам понадобитсяиметь некоторый вид списка записей, к которым у определенного пользователя есть доступ.При использовании Pundit вы должны определить класс, называемый областью действия политики.Это может выглядеть примерно так:

class PostPolicy < ApplicationPolicy
  class Scope
    attr_reader :user, :scope

    def initialize(user, scope)
      @user  = user
      @scope = scope
    end

    def resolve
      if user.admin?
        scope.all
      else
        scope.where(published: true)
      end
    end
  end

  def update?
    user.admin? or not record.published?
  end
end
...