Вопрос

У меня вопрос о том, как сделать что-то «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.:)

Еще раз всем спасибо!

Конечно, поздно для ответа, но мне действительно нужен был ответ на этот вопрос:как легко сделать админку?

Вот что можно использовать в наши дни: Активный администратор, с Великолепное вступление Райана Бейтса.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top