У меня есть модель с атрибутом status
(который может быть open
или ready
). Модель может быть отредактирована, когда статус open
, но должна быть заблокирована, когда она будет ready
.
Разрешено ли мне делать это в моей Policy
? Или политики предназначены только для авторизации?
Я знаю, что могу просто сделать это, мой вопрос больше о принципах в Laravel ...
Всего 1 ответ
Думаю, нет ничего плохого в том, чтобы поставить этот тип проверки в Политику вашей модели, это немного зависит от контекста. Я хотел бы думать о политиках (как вы описали) как начальные ворота входа в данное приложение. Так что, если это относится, например, только к методу обновления вашего контроллера, у вас все хорошо, imho.
Однако в случае, если могут существовать другие «пути» или процессы, на которые может повлиять описанное вами ограничение «открыть / готово», также может быть целесообразно включить этот тип проверок в ModelObserver saving
.
Делая это, вы гарантируете, что не случайно манипулируете объектом, когда он ready
просто потому, что вы забыли выполнить проверку авторизации заранее. Другими словами, реализуя его в методе saving
ObserverClass, вы получаете «автономный» фрагмент поведения, который скорее представляет бизнес-логику, чем логику авторизации.