Генерация (скаффолдинг) админки в Ruby on Rails

Как правило каждое приложение на Ruby on Rails имеет какой-то свой административный интерфейс, если только это не совсем простенький полу-статичный сайт визитка (наверное в таком случае больше подойдут Sinatra или Padrino?). Известный человек в мире Rails — Райан Бейтс в одном из своих первых рейлскастов предлагает объединять в коде административный и публичный раздел. Думаю имеет место и другой подход. Вот почему:

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

Таким образом, здравый смысл подсказывает, что админку лучше структурно отделить от публичной части сайта. Код публичной части сайта будет проще и чище, а код админки будет выполнять исключительно ту функцию, для которой он предназначен. Конечно же есть гемы activeadmin, rails_admin и другие, которые предлагают полноценную админку, однако порой удобнее реализовать свой простенький вариант админки, а не кастомизировать сложный механизм под себя.

Хочу рассказать вам о том, как же максимально просто провести такое разделение на примере тестового приложения.