Путь Rails — Пространства имен
-
02-07-2019 - |
Вопрос
У меня вопрос о том, как сделать что-то «The Rails Way».Каково общее мнение в сообществе Rails о том, как это сделать, если приложение имеет общедоступную сторону и интерфейс администратора?
Пространства имен, поддомены или вообще отказаться от них?
Решение
На самом деле не существует настоящего «путя Rails» для интерфейсов администратора — вы можете найти все возможные решения в ряде приложений.DHH подразумевал, что он предпочитает пространства имен (с базовой аутентификацией HTTP), но это осталось простым выводом, а не одним из официальных мнений Rails.
Тем не менее, в последнее время этот подход (пространство имен + HTTP Basic) добился хороших результатов.Это выглядит так:
маршруты.рб:
map.namespace :admin do |admin|
admin.resources :users
admin.resources :posts
end
admin/users_controller.rb:
class Admin::UsersController < ApplicationController
before_filter :admin_required
# ...
end
application.rb
class ApplicationController < ActionController::Base
# ...
protected
def admin_required
authenticate_or_request_with_http_basic do |user_name, password|
user_name == 'admin' && password == 's3cr3t'
end if RAILS_ENV == 'production' || params[:admin_http]
end
end
Условное включение authenticate_or_request_with_http_basic
запускает базовую аутентификацию HTTP в производственном режиме или при добавлении ?admin_http=true
на любой URL-адрес, чтобы вы могли протестировать его в функциональных тестах и вручную обновлять URL-адрес при просмотре сайта разработки.
Другие советы
Я не думаю, что в некоторых небольших приложениях вам нужно отделять интерфейс администратора.Просто используйте обычный интерфейс и добавьте функции администратора для зарегистрированных пользователей.
В более крупных проектах я бы использовал пространство имен.По какой-то причине мне кажется неправильным использование поддомена.
Я задал несколько похожий вопрос. Бэкэнд-администрирование в рельсах.В одном из ответов упоминались пространства имен, и это то, что я реализовал.
Спасибо всем, кто ответил на мой вопрос.Похоже, что консенсус заключается в том, чтобы использовать пространства имен, если хотите, поскольку не существует подхода Rails Way, спонсируемого DHH.:)
Еще раз всем спасибо!
Конечно, поздно для ответа, но мне действительно нужен был ответ на этот вопрос:как легко сделать админку?
Вот что можно использовать в наши дни: Активный администратор, с Великолепное вступление Райана Бейтса.