Самый простой способ сделать это, вероятно, для спасения от Pundit::NotDefinedError
, поднятого Pundit::PolicyFinder#policy!
.
Учитывая вашу политику по умолчанию:
# app/policies/application_policy.rb:
ApplicationPolicy = Struct.new :user, :record do
def index?
true
end
def show?
true
end
# ... other sensible defaults
end
Предполагая, что вы используете это в контроллере Rails:
# app/controllers/application_controller.rb:
class ApplicationController
include Pundit
# ...
private
def policy(record)
super
rescue Pundit::NotDefinedError
ApplicationPolicy.new pundit_user, record
end
end
Отказ от ответственности: я должен также заявить, что создание неявных политики по умолчанию is generally frowned upon. За исключением простейших случаев или с самыми пессимистическими значениями по умолчанию (все ложные), слишком легко преодолеть чрезмерно разрешительную политику.
Вы когда-нибудь находили решение? Я в той же ситуации и интересуюсь вашим окончательным подходом. – geoboy