2008-09-23 8 views
30

"레일 웨이"를 어떻게하는지에 대한 질문이 있습니다. 공개 된 측면과 관리 인터페이스가있는 애플리케이션을 사용하는 방법에 대한 레일스 커뮤니티의 일반적인 합의는 무엇입니까?레일 웨이 - 네임 스페이스

이름 공간, 하위 도메인 또는 모두 무시합니까?

답변

40

실제로 관리 인터페이스에는 "레일 방식"이 없습니다. 실제로 많은 응용 프로그램에서 가능한 모든 솔루션을 찾을 수 있습니다. DHH는 (HTTP 기본 인증을 사용하여) 네임 스페이스를 선호한다고 암시했지만, 이는 공식적인 레일스 의견 중 하나가 아니라 단순한 함축으로 남아 있습니다.

즉, 최근에이 접근법으로 성공을 거뒀습니다 (네임 스페이스 + HTTP 기본).

routes.rb :

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

관리자/users_controller.rb : authenticate_or_request_with_http_basic

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 

조건부은 HTTP를 트리거는 다음과 같습니다 프로덕션 모드의 기본 인증 또는 ?admin_http=true을 임의의 URL에 추가하면 c 기능 테스트에서 테스트하고 개발 사이트를 탐색 할 때 수동으로 URL을 업데이트하십시오.

+2

나는 이것을 싫어한다. 라우트는 "new_admin_user_path"와 같이 어색한 이름을 갖습니다. 관리자가 새로운 사용자를 생성하고 새로운 관리자를 생성하는 것은 아닙니다. "admin_new_user_path"라고합니다. 추한. 그것은 내가 틀린 것을 위해 네임 스페이스를 사용하고 있다고 의심하게 만듭니다. – hoff2

5

일부 작은 응용 프로그램에서는 관리자 인터페이스를 분리해야한다고 생각하지 않습니다. 일반 인터페이스를 사용하고 로그인 한 사용자에게 관리자 기능을 추가하기 만하면됩니다.

더 큰 프로젝트에서는 네임 스페이스를 사용했습니다. 하위 도메인을 사용하는 것은 나에게 어떤 이유로 느껴지지 않습니다.

0

제 질문에 답변 해 주신 모든 분들께 감사드립니다. DHH가 후원하는 Rails Way 방식이 없기 때문에 네임 스페이스를 사용하는 것이 일치하는 것처럼 보입니다. :)

다시 한 번 감사합니다.

0

분명히 답장이 늦었지만이 질문에 대한 답변이 정말로 필요했습니다. 관리 영역을 쉽게 수행하는 방법은 무엇입니까?

최근에 사용할 수있는 것은 다음과 같습니다. Active Admin, Ryan Bates's great intro.