The Rails Way - Пространства имен - PullRequest
30 голосов
/ 23 сентября 2008

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

Пространства имен, поддоменов или вообще отказаться от них?

Ответы [ 5 ]

40 голосов
/ 23 сентября 2008

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

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

5 голосов
/ 23 сентября 2008

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

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

2 голосов
/ 23 сентября 2008

Я задал несколько похожий вопрос. Бэкэнд администрирование в рельсах . В одном из ответов упоминаются пространства имен, и это то, что я реализовал.

0 голосов
/ 06 октября 2011

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

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

0 голосов
/ 23 сентября 2008

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

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

...