Сценарий таков:
У меня есть несколько пользователей на моем сайте. У пользователя есть роль, здесь уместны admin
и normal
. У меня тоже есть модель, назовем ее SomeModel
.
Я создал бэкэнд для сайта, который использует макет admin . Все администраторы имеют полный доступ для редактирования любого контента.
Проблема возникает с этим отношением: Пользователь -> владеет -> SomeModel . Это означает, что не администратор Пользователь может владеть экземпляром SomeModel
и должен иметь возможность редактировать данные этого экземпляра.
Контроллер для SomeModel
имеет действие редактирования, которое обслуживает как администраторов, так и обычных пользователей.
Тем не менее, я не хочу, чтобы обычные пользователи просматривали макет admin и сейчас, как я это делаю, выглядит так:
if current_user.admin?
render :layout => 'admin'
end
По умолчанию используется стандартная схема, если пользователь не является администратором. У меня есть это во всех моих действиях для SomeModel
, и это просто не похоже на очень Rails-способ действий.
Есть ли лучший способ?