2011-08-06 2 views
0

여러 수준의 권한이있는 사이트를 작성하고 있습니다. 내 시스템에는 기본적으로 3 가지 종류의 사용자가 있습니다. 관리자, 비즈니스 및 소비자 (일반 사용자)입니다. 광고 사이트를 구축하고 있다고 가정 해 봅시다.레일 디자인 질문 : 컨트롤러를 여러 권한 수준으로 구성하는 방법은 무엇입니까?

레일 프레임과 함께 제공되는 RESTful API가있는 모델 "캠페인"이 있습니다. 기업은 캠페인을 만들 수 있으며 사용자는 가입하려는 캠페인 만 볼 수 있으며 관리자는 모든 것을 할 수 있습니다.

이제는 before_filter를 적용하고 특정보기에 액세스 할 수있는 사용자 유형을 엄격하게 검사하는 방법을 알고 있습니다.

그러나 각 권한 수준에는 고유 한보기가 있습니다.

기업은 캠페인의 통찰력과 분석을 볼 수 있습니다. (이 캠페인/애널리틱스라고 부름) 소비자는 참여한 모든 캠페인을 볼 수 있습니다. (이 캠페인/사용자에게 전화하기) 관리자는 사이트 활동을 모니터링 할 수있는 특별한보기를 가지고 있습니다. (이 캠페인/monitor_businesses라고 부름).

지금 내 CampaignController는 일반적인 RESTful 뷰 + 분석 + your + monitor_businesses를가집니다. 물론, 여러 데이터 모델 (캠페인뿐 아니라)이 있으므로 이러한 데이터 모델에 대한 내 RESTful 컨트롤러가 실제로 엉망이됩니다.

어떻게해야합니까? ConsumerController를 시작한 다음 BusinessController를 시작하고이 컨트롤러에 연결된 뷰를 모두 넣을 것을 진지하게 고려하고 있습니다. 이 규칙이 "RESTful"원칙을 위반하는지는 모르겠지만 내 문제를 해결하기 위해 어떤 패턴이 더 좋은지 알고 싶습니다.

나는 모든 종류의 제안이 가능합니다.

+0

어떻게 사용자 인증을 처리합니까? –

답변

0

Y는 역할 관리 http://rubygems.org/gems/cancan

의 캉캉 보석을 시도하거나 난이 도움이되기를 바랍니다 gem install cancan을 해달라고.

+0

내가 cancan을 사용하는 것 같아요. 컨트롤러를 두통없이 모두 남겨 둘 수 있습니다. – disappearedng

+0

예. 괜찮습니다. – Uchenna

2

왜 역할 관리를 위해 CanCan 보석을 사용해 보지 않으시겠습니까? 번들러를 사용하여 원하는대로 설치할 수 있습니다.

설정이 쉽고 일반적으로 여분의 컨트롤러 또는 작업을 작성하여 동일한 상용구 코드를 작성하지 못하도록합니다.

시작하려면 기본 페이지의 설명서를 방문하십시오. defining what a user can do here에 대한 자세한 내용은 how to check for abilities here을 참조하십시오. here에 대해 읽을 수있는 사용 권한을 적용하려는 컨트롤러에 한 줄을 추가해야합니다.

표준 문서가 시작하기에 충분하지 않은 경우 왜 Railscast 192을 살펴보십시오. Ryan Bates는 CanCan의 창작자이자 스크린 캐스터의 창시자이기 때문에 CanCan을 시작하고 실행하는 방법을 보여줍니다. 비디오가 너무 빨리 움직이는 경우 텍스트 버전 here이 있습니다.

관련 문제