У меня есть ресурс Accounts
(модель + контроллер). В настоящее время всем действиям AccountsController
предшествует authorize_admin
before_action
, который проверяет, является ли пользователь администратором или нет, а если нет - он перенаправляет пользователя на home_path
.Как реализовать авторизацию на основе ролей только для определенных атрибутов модели в Rails?
Теперь я хочу, чтобы пользователи могли редактировать некоторые поля своих учетных записей. Я не знаю, как это сделать. У меня есть несколько идей:
В контроллере же счетов создавать собственные
edit_personal_account
иupdate_personal_account
действия с пользовательскимpersonal_account_params
(Rails 4, сильные параметров). Вpersonal_account_params
я будуpermit
только поля, которые пользователь может редактировать.Создать новый
PersonalAccounts
контроллер с нормальными успокоительными действиями, но толькоedit
,update
иshow
. Этот контроллер снова взаимодействует с модельюAccount
.Используйте драгоценный камень, например
cancancan
илиpundit
. Я просмотрел их документацию и вики, но до сих пор я нашел примеры того, как ограничить доступ к целым действиям на основе роли, а не как ограничить доступ к определенным полям.
Итак, мой вопрос: какой из трех способов был бы наиболее подходящим для моего сценария и есть ли другие лучшие способы?
Это выглядит великолепно! Спасибо. –