Неплохой дизайн для смешивания кода, который касается логики безопасности в модели?Смешивание логики безопасности с моделями в Ruby on Rails?
Пример для редактирования страницы в before_save обратного вызова
- Текущий пользователь схваченного от метода
current_user
в слое контроллера. - Throw исключение, если
current_user.has_permission? :edit_page
ложно editor_id
установлен вcurrent_user.id
- Изменение вошедшего в отдельной таблице
Модель не только проверка безопасности в приложении. Пользовательский интерфейс проверяет разрешение перед просмотром редактирования экрана. Модель выступает в качестве препятствия для любых ошибок на уровне View/Controller.
Примечание: Единственное нарушение между уровнями модели и контроллера - это метод current_user
. Приложение, над которым я работаю, никогда не позволит анонимным пользователям.