Подтвердить что ты не робот

Путь Rails - Пространства имен

У меня вопрос о том, как сделать что-то "The Rails Way". С приложением, которое имеет открытую сторону и интерфейс администратора, каков общий консенсус в сообществе Rails о том, как это сделать?

Пространства имен, субдомены или вообще не выполняются?

4b9b3361

Ответ 1

Нет реального "пути Rails" для админ-интерфейсов, на самом деле - вы можете найти все возможные решения в ряде приложений. DHH подразумевает, что он предпочитает пространства имен (с базовой аутентификацией HTTP), но это оставалось простым следствием, а не одним из официальных мнений Rails.

Тем не менее, я нашел хороший успех с этим подходом в последнее время (namespacing + HTTP Basic). Это выглядит так:

routes.rb:

map.namespace :admin do |admin|
  admin.resources :users
  admin.resources :posts
end

админ/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 Basic auth в производственном режиме или при добавлении ?admin_http=true к любому URL-адресу, поэтому вы можете протестировать его в своих функциональных тестах и ​​вручную обновить URL-адрес при просмотре сайта разработки.

Ответ 2

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

В больших проектах я бы пошел с пространством имен. По какой-то причине использование субдомена мне не кажется правильным.

Ответ 4

Спасибо всем, кто ответил на мой вопрос. Похоже, что консенсус заключается в использовании пространств имен, если вы хотите, поскольку не существует метода поддержки Rails Way, поддерживаемого DHH.:)

Снова, спасибо всем!

Ответ 5

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

Вот что можно использовать в наши дни: Active Admin, Райан Бэйтс большое вступление.