0

Я работаю над проектом, который включает в себя семь разных пользователей. У этих пользователей есть очень похожий вид панели.Создание нескольких панелей мониторинга для полдюжины типов пользователей в Rails

Они почти точно так же для каждого пользователя, но немного отличаются: пользователи

  • высшего уровня имеют определенные кнопки видимые
  • Компоновка таблица включает в себя дополнительные столбцы
  • Некоторые действия, связанные с записи в таблице ограничены для обычных пользователей

Я хотел бы сделать код более СУХОЙ, но как мне подойти к этой проблеме, если частичная обработка осложнит макет, а не подразумевать это, в данном случае?

Моя первоначальная идея состояла в том, чтобы отображать ВСЕ элементы, но скрыть/ограничить их операциями if, делая для один, но очень логично-тяжелый вид.

В более широком смысле, если пользовательский интерфейс значительно изменяется в зависимости от уровня привилегий пользователя, просматривающего его, каков приемлемый шаблон Rails для хранения вещей?

ответ

1

Я думаю, что Pundit будет идеально подходит для вас, если DRY и OO являются проблемами :). Это действительно супер объектно-ориентированный и чистый подход.

По сути, вы будете двигаться все (часто сложные) логики авторизации политики, и вы мнения будут выглядеть следующим образом (из документации):

<% if policy(@post).update? %> 
    <%= link_to "Edit post", edit_post_path(@post) %> 
<% end %> 

 Смежные вопросы

  • Нет связанных вопросов^_^