2016-07-30 2 views
0

Pundit gem을 사용하여 구현 된 사용자, 역할 및 권한이있는 레일 4 애플리케이션이 있습니다. 나는 사용자와 역할 사이에 many_to_many 관계를 가지고 있기 때문에 3 개의 모델 user, role, roles_users를 가지고있다. 사용자 역할을 수정하고 싶습니다.레일 4 - 사용자 역할 권한 업데이트

class User 
    has_and_belongs_to_many :roles 
end 

class role 
    has_and_belongs_to_many :users 
end 

user_id 및 role_id를 저장하는 세 번째 테이블 roles_users.

사용자 역할을 편집하고 싶다면 어떤 접근 방식을 따라야할까요? 세 번째 테이블 (예 : roles_users)에서 기존 레코드를 삭제 한 다음 역할을 나타내는 새 레코드를 만들어야합니다. 제발 제안 해주세요.

답변

2

아직 작업 중이거나 정확히 달성하려는 내용이 있는지는 잘 모르겠지만 명성이있는 사용자 역할을 처리하는 좋은 방법은 사용자 프로필을 처리하고 관리자 계정을 만들기 위해 devise와 협력하고있는 것입니다. 관리자는 특정 사용자의 역할을 옵션 (예 : 사용자, VIP, 운영자, 편집자, 관리자 등)으로 변경할 수 있습니다. 하늘은 앱이 여러 역할을 수행하는 데 필요한 복잡성의 한계입니다.

class User < ActiveRecord::Base 

    enum role: [:user, :vip, :admin] 
    after_initialize :set_default_role, :if => :new_record? 

    def set_default_role 
    self.role ||= :user 
    end 

    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable 

end 

당신이 일반 사용자로 새 사용자의 기본 역할을 설정할 수 있습니다이 방법 후 관리자가 사용자를 업데이트 할 수 있습니다 : 사용자 모델에서 "열거"의 사용은 역할 옵션을 안내하는 데 도움이됩니다 새로운 사용자가해야 할 역할. 여러 회사/그룹이있는 좀 더 복잡한 앱을 원한다면 멀티 테넌트 애플리케이션으로 작업 할 수 있어야합니다. 전문가의 정책과 범위가 작동하여 앱에서 특정 작업을 수행 할 수있는 권한을 부여받은 사용자를 결정할 수 있습니다. 관리자가 블로그 게시물

  • 일반, 삭제, 관리자가 사용자의 역할
  • 관리자를 변경하고 편집기를 만들 수 있습니다
  • 사용자 편집의 목록을 볼 업데이트 할 수 있습니다

    • : 예를 들어, 사용자는 일반 사용자가 볼 수없는 자신의 역할
    • 일반 사용자를 변경할 수 없습니다
    • 사용자 (또는 편집) 다른 사용자의 프로필
    • ordinar의 목록을 볼 수 없습니다 Y 사용자는 일반 사용자가 게시 된 블로그 게시물

    좋은 자원을 볼 수 있습니다 참조 (편집) 자신의 사용자 프로필

  • 는 일반 사용자가 편집 할 수 없습니다, 삭제 또는 블로그 게시물
  • 를 업데이트 할 수 있습니다 시작하려면 Rails-devise-pundit 샘플 응용 프로그램을 따라 가면됩니다.이 응용 프로그램을 통해 사용자 역할을 설정하는 과정을 쉽게 익힐 수 있습니다. 더 시각적 인 동영상을 보려면 YouTube 동영상 (Rails Authorization with Pundit)을 따르세요. 이 비디오는 사용자 역할을 생성 할 때 rspec을 사용하여 테스트하려는 경우 유용합니다.

    이 방법을 사용하면 달성하려는 방향과 정확히 일치하게됩니다.