Если у кого-то есть такая проблема, вот как я ее исправил.
Оказалось, что проблема была в структуре App/Models
. магия , созданная laravel для определения имени политики, учитывает местоположение модели.
Чтобы обойти это поведение, поместите приведенный ниже код внутрь app/Providers/AuthServiceProvider.php
в функцию загрузки.
Gate::guessPolicyNamesUsing(function ($modelClass) {
return 'App\\Policies\\' . class_basename ( $modelClass).'Policy';
});
Это заставит смотреть на App/Policies
вместо App/Models/Policies
. (изменить соответственно)
А потом я понял, что папка Policies должна быть размещена внутри App/Models
, потому что именно там находится модель, но, эй, кто знает? Полагаю, что размещение моих моделей в другой папке усложнит мне жизнь.
Пока, надеюсь помочь кому-нибудь в будущем.