2012-05-31 2 views
1

좋아요, github에 대한 railsapps 템플릿 안내를 따라했습니다. CanCan의 ryanb 's railscast (내 이벤트 모델의 Comment 변수 교환). 저는 새로운 사용자를 구성하고 "스폰서"역할에 관리 역할에 주어진 기능의 하위 집합을 할당했습니다. Rails에서로드 할 때Devise> CanCan> 잘못 할당 된 역할 롤링

정의되지 않은 메소드`role? ' 사용자를위한 : 0x08 ...

좋아, 나는 "스폰서"역할에 새로운 사용자의 지정을 다시하고 무언가가 깨 졌는지보기 위해 콘솔 내에서 뒤로 가고있다. 끝 부분을 들여다 보면 깨져 보이지만 해결 방법을 모르는 것을 볼 수 있습니다.

resourcify 
    belongs_to :school 

학교 has_many events, has_and_belongs_to_many_usersbelongs_to :event : 여기 내 ability.rb

class Ability 
include CanCan::Ability 

def initialize(user) 
    user ||= Us # guest user (not logged in) 
    if user.has_role? :admin 
    can :manage, :all 
    else 
    can :read, :all 
    end 

    if user.role? :sponsor 
    can :create, Event 
    can :read, Event 
    can :update, Event do |event| 
     event.try(:user) == user 
    end 
    else 
    can :read, :all 
    end 

end 
end 

내 event.rb입니다. 콘솔에서 나는 올바른 이름, school_id, 이메일 등으로 new_user를 만들었다. 예상대로 작동했다. 그 때 :

나는 사용자 ID가 스폰서 역할 ID와 함께 줄 지 알았다. 다음 단계는 내 문제가 시작되는 곳입니다. . 다음 수득

ability = Ability.new(new_user) 

:. "롤"INNER은 "롤"ON "users_roles" "ID"= "users_roles를"가입 FROM

SELECT COUNT (*)는 "ROLE_ID"WHERE " users_roles "."USER_ID "= 5 AND (((이름 = '관리자')과은 (RESOURCE_TYPE이 NULL IS)

user_id를 잘하지만"이름이 " '관리자'이 아니다. 나는 그것이해야한다고 생각 것 '스폰서'이름을 찾으십시오.

이것은 간단한 질문 일지 모르지만이 잘못된 할당이 이벤트 # 인덱스 오류가 위에 표시된 이유에 대한 내 문제의 근원 일 수 있다고 생각합니다. Ability.new가 "admin"에 붙어 있다고 가정하는 것 같습니다. 무엇이 내려다보고 있습니까, 고맙습니다, 샘

답변

2

잘못된 코드로 사용자의 역할을 쿼리하고 있습니다. 당신이 캉캉없이 콘솔의 간단한 rolify 명령을하려고이

user.has_role? :sponsor 
user.has_role? :sponsor, School 
user.has_role? :sponsor, School.first 

같은 뭔가가 필요 rolify와

user.role? :sponsor # wrong 

user.add_role :sponsor 
user.has_role? :sponsor 

이, Ability.new이 선택 쿼리를 산출하는 것이 매우 정상입니다 관리자 역할을 가지고 계신 분

if user.has_role? :admin 
능력 초기 자의

관련 문제