2011-06-13 2 views
2

저는 Basecamp와 같은 역할 기반 시스템을 디자인하고 싶습니다. 사용자는 브랜드 편집자 일 수 있으며 다른 브랜드의 근로자 일 수도 있습니다. 나는 devise + cancan을 사용하고 있습니다. 어떻게이 상황을위한 데이터베이스를 설계 할 수 있습니까? 감사.여러 역할의 레일

답변

0

acl_system2. 그것의 오래된 플러그인,하지만 체크 아웃의 readme 파일은 목적을 제공하는지 확인하십시오.

2

롤 모델을 권하고 싶습니다. 이 시나리오에서 사용자는 have_and_belong_to_many :roles이고 역할은 have_and_belong_to_many :users입니다. 이로 인해 역할과 사용자간에 많은 관계가 만들어집니다. 연결에 대한 자세한 내용은 this RailsGuide를 참조하십시오. 당신의 캉캉 ability.rb에서

(나는 당신의 설정에서 추측하고) 당신이 뭔가를 할 수있는 파일 : 당신의 user.rb에서

can :manage, Brand do |brand| 
    user.has_role?("brand_manager") && user.brands.include?(brand) 
end 

가 이런 식으로 뭔가를 작성하는 도움 파일 :

def has_role?(name) 
    role = Role.find_by_name(name) 
    (self.roles.include?(role)) ? (return true) : (return false) 
end 

희망이 도움이됩니다.