여기 내 문제가 있습니다 :CANCAN 정의되지 않은 메소드`user_type? ' "admin": 문자열
저는 cancan gem을 사용하고 있습니다. 나는 모든 것이 잘되고 있다고 생각한다. 단 하나만 제외하고는 undefined method 'user_type?' for "admin":String
이 나온다.
여기
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # guest user
if user.user_type? :admin
can :manage, :all
# [code code code code commented to find more easily the problem]
else
can :read, :all
end
end
end
내 user.rb
require 'digest/sha2'
class User < ActiveRecord::Base
#definisco i ruoli
ROLES = %w[admin client banned]
default_scope :order => 'user' [...]
내가 수정해야 할 무엇을 알아낼 수 없습니다 내 ability.rb입니다. 왜 if user.user_type? :admin
은 현재 사용자 속성을 확인하지 않습니까? 관심을 가져 주셔서 감사합니다.
UP : 좋아, 나는 응용 프로그램 컨트롤러에 선언 된 "current_user"메서드가 필요합니다. 이제 나는 그것에 대해 연구한다. 곧 뉴스.
? 방법? – Shreyas
어디에서 승인을 확인합니까? 무슨 컨트롤러 요? (컨트롤러 인 경우) 해당 코드도 붙여 넣으십시오. 어떻게 든 CanCan에 전달되는'user' 변수는''admin "'값을 가진 문자열입니다. 왜냐하면'user'가 실제로'User' 인스턴스가되기를 원합니다. –
해결됨! ability.rb 에 user.user_type == "관리자"애플리케이션 컨트롤러 제가 추가 데프 @current_user = User.find_by_id를 CURRENT_USER 경우 (세션 [: USER_ID]) 단부 THANKS! –