2016-07-06 4 views
0

나는 상점들이 직원을 조직하도록 돕는 것을 목표로하는 앱을 제작 중입니다. 많은 상점들이 있고 각 상점은 직원들에게 많은 역할을합니다. 유일하게 일정한 위치는 관리자의 것입니다. 나는 그/그녀가 자신의 역할을 할 수있게하고 싶습니다. 예를 들어, A 상점에서 배달원은 order_status를 갱신 할 수 있지만 B 상점에서는 그렇지 않을 수 있습니다. 알다시피, 나는 역할이 관례이고 특정 상점에서 제한되고 싶다. 나는 cancancan, rolify 및 pundit (그러나 나는 제안에 열려있다) 권한 부여를위한 3 개의 주옥을 고려하고있다. Rolify 그 유명한 아니다 그러나 당신이 최선의 선택이라고 생각합니까 보석레일, 승인을위한 보석 선택

user.has_role?(:manager, Shop.find(4)) 

을 말할 convinient 옵션이? 고맙습니다!

편집 : 다음 링크는 매우 유용합니다. Click

+0

"역할"에 대한 인기있는 보석은 [전문가] (https://github.com/elabs/pundit)입니다. –

답변

0

전문가는 정책을 통해 권한을 관리하며 최선이라고 생각합니다.

당신은 크레타 인덱스/쇼 등의 작업을 관리하는 응용 프로그램/정책/application_policy.rb은/...

def index? 
    false 
    end 

    def show? 
    false 
    end 

    def create? 
    false 
    end 

    def new? 
    create? 
    end 

    def update? 
    false 
    end 

    def edit? 
    update? 
    end 

    def destroy? 
    false 
    end 

를 생성하고 그 후

class MyClassPolicy < ApplicationPolicy 
end 

확인 학자와 같은 정책을 생성 할 수 있습니다 선적 서류 비치.

사용할 수있는 역할 정보 : 롤 모델 젬 (https://github.com/martinrehfeld/role_model)은 역할을 너무 쉽게 관리합니다. 예를 확인하고 필요한지 물어보십시오.

1

질문에 대한 답변은 답변자의 의견을 기반으로합니다. 필자는 CanCanCan을 선호한다고 생각합니다. 잠시 동안 사용했기 때문에 처음에는 약간의 문제가있을 수 있지만 처음에는 이상하게 여겨졌습니다. 모두 부드러운 항해가되었습니다. 간단한 논리 덕분에 응용 프로그램 내에서 열거 형을 사용하고 곧바로 생산성을 높일 수 있습니다. 다른 사람들은 Pundit을 주장 할 것입니다. Pundit은 설치하기 쉽고 통합하기 쉽고, rolify 나 devise 등 다른 라이브러리와 작업하기 쉽습니다.이 경우에는 옳고 그른 대답은 없을 수도 있지만 궁극적으로는 특정 유스 케이스 및 설정 시간에 따라 결정됩니다.

1

귀하의 요구 사항에 따라 Pundit Gem보다 인증을받는 것이 가장 좋습니다.

하지만 내 지식에 따라 명사 나 보석은 모든 것을 당신을 위해 해줄뿐입니다. 상점 당 모든 사용자에게 동적 권한을 부여해야합니다. 따라서 데이터베이스 설정으로도 관리해야합니다.

3 개의 테이블이 필요합니다. 시나리오 위

user has_one role 
role has_many permissions 
user has_many permissions through role 

단지 코어 로직이 다를 수 있습니다 예입니다

사용자
역할
권한

설정하고 관계를 다음과 같이 요구 사항에 따라 달라집니다.

희망이 도움이 될 것입니다.