2015-08-15 5 views
0

Есть ли способ указать класс политики в методе authorization в Pundit? Когда вы делаетеКак авторизовать из определенной политики в pundit (Rails)

authorize @user, :show 

Он использует UserPolicy класс, потому что @user есть (модель) экземпляр User. Кто-нибудь знает способ выполнения метода authorize в другом классе политики? например, CustomerPolicy, без использования модели Customer.

+1

https://github.com/elabs/pundit#headless-policies – max

+0

Ницца, был там (нуб). Просто добавьте, что если в политике используется пространство имен, вам нужно указать массив символов с пространствами имен, например, если вы получили «Люди :: CustomerPolicy», тогда авторизация будет «authorize [: people,: customer]'. Если помогает кому-то: P – mariowise

ответ

1

Вы можете использовать символ вместо экземпляра модели, чтобы вызвать «безгласную» политику (политику без модели поддержки).

authorize :customer, :show 
# or for a namespaced policy 
authorize [:people, :customer] 

Другой вариант, чтобы установить политику на модели класса:

class User < ActiveRecord::Base 
    def self.policy_class 
    CustomerPolicy 
    end 
end