Мне очень нравится идея сделать мои политики ответственными за то, чтобы все переменные были заполнены и действительны, поэтому мы не получаем ничто: ошибки nilClass или аналогичные.Проверить переменную существует с Pundit
Я думал, что это было бы хорошо, чтобы убедиться, что пользователь загрузил файл, используя политику:
Вот мое создать действие:
def create
file = params[:file][:uploaded_file]
authorize file
# removed for brevity
end
И вот его политика:
class AssetPolicy < ApplicationPolicy
def initialize(current_user, record)
@current_user = current_user
@record = record
end
def create?
@record != nil
end
end
Однако я получаю следующие непредвиденные ошибки:
Когда файл равен нулю:
Pundit::NotDefinedError in Admin::Browser::AssetsController#create
unable to find policy NilClassPolicy for
Если файл не ноль:
Pundit::NotDefinedError in Admin::Browser::AssetsController#create
unable to find policy ArrayPolicy for [#<ActionDispatch::Http::UploadedFile:0x000000050a2af8]
Так как я должен кое-что проверить, существует с пандита?