2011-05-15 2 views
1

인증이 필요한 응용 프로그램이 있고 사용자 모델이 있습니다. 다음 규칙에 따라 4 단계 인증이 있습니다.Ruby on Rails의 사용자 계층 디자인

  1. 레벨 1 사용자는 2,3,4 레벨의 모든 사용자를 생성/편집/삭제할 수 있습니다.
  2. 레벨 2 사용자는 레벨 3 및 4 사용자를 만들고 자신이 소유 한 사용자 만 편집 할 수 있습니다.
  3. 레벨 3과 4에는 사용자 생성/수정/삭제 권한이 없습니다.
  4. 업데이트 : 수준 3 및 4 사용자는 여러 수준 2 상위 사용자를 가질 수 있습니다.

이 외에도 모든 사용자가 단일 인터페이스를 통해 로그인 할 수 있기를 바랍니다.

이러한 계층 구조를 처리하기위한 패턴이 있습니까? cancan과 같은 인증 플러그인을 사용하면 다른 사용자 간의 관계는 아니지만 다양한 권한 수준을 정의 할 수 있습니다. 당신은 사용자 모델에 속성 level을 추가 할 수

답변

1

@level_two_users = current_user.find_all_my_level_two_users 

감사를 조회하는 방법 :

는 기본적으로 나는 이와 같은 컨트롤러 코드를 작성하는 저를 가능하게 할 디자인을하고 싶습니다 허용 된 사용자.

은 Btw는 User.find_all_by_level(2)

class User 
    attr_accessible :level 

    def allowed_to_edit_user?(user) 
    case self[:level] 
     when 1 
     user.level > 1 
     when 2 
     user.level > 2 && user.created_by?(self) 
    end 
    false 
    end 

    def allowed_to_create_user_with_level?(level) 
    self[:level] <= 2 && self[:level] < level 
    end 
end 

같은 쿼리를 사용하는 수준의 X 모든 사용자를 얻으려면. 누가 레벨 1 사용자를 생성합니까? ;-)

+0

답장을 보내 주셔서 감사합니다. 솔루션을 사용하여 실행하려고하고 있으며 다른 장애물을 맞았습니다. 위의 업데이트를 확인해 주시겠습니까? – pingu

+0

@pingu'creator'에 대해': has_many' 관계를 사용할 수 있습니다 (한 명의 사용자는 다른 많은 사용자를 작성자로 가지고 있습니다). 그런 다음'created_by?'메소드를 사용하여이 관계를 질의 할 수 있습니다. – arnep