2012-03-19 5 views
0

위해 나는 다음과 같은 abilities 모델이 있습니다정의되지 않은 메서드 'role?' 사용자

class Ability 
    include CanCan::Ability 

    def initialize(user) 
    user ||= User.new # guest user, not logged in. 

    if user.role? == :admin 
     can :manage, :all 
    else 
     can :read, :all 
     end 
     if user.role == "default" 
     can :create, Homescreen 
     end 
     can :destroy, Homescreen do |homescreen| 
      homescreen.try(:user) == user 
     end 
    end 
end 

을 그리고 난 다음 사용자 모델이 있습니다

내 로컬 컴퓨터에서 실행
class User < ActiveRecord::Base 
    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable 

    before_create :setup_default_role_for_new_users 


    attr_accessible :email, :password, :password_confirmation, :remember_me 
    has_many :homescreens 

    ROLES =%w[admin default] 
    private 
    def setup_default_role_for_new_users 
    if self.role.blank? 
     self.role = "default" 
    end 
    end 
end 

, 잘 작동합니다. 내가 Heroku가에 배포 할 때

그러나, 나는 다음과 같은 오류 얻을 :

GET URL.herokuapp.com dyno=web.1 queue=0 wait=0ms service=158ms status=500 bytes=643 
    app/models/ability.rb:7:in `initialize' 
NoMethodError (undefined method `role?' for #<User:0x00000003b56050>): 

cache: [GET /] miss 

Started GET "/" for my-ipaddress at 2012-03-19 16:14:38 +0000 

NoMethodError (undefined method `role?' for #<User:0x00000003df5d88>): 
    app/models/ability.rb:7:in `initialize' 

cache: [GET /] miss 

내가 무슨 일을하고 있는가?

+0

데이터베이스를 이전 했습니까? –

+0

우리에게'user.rb' 모델을 보여주세요, 당신은 실제로이 방법을 가지고 있거나 사용자 테이블에 부울 필드 역할을 가지고 있습니까? –

+0

@NeilMiddleton 예, 새로운 heroku 앱을 만들고 다시 시도하는 것을 포함하여 여러 번. – jrg

답변

2

나는 다음과 같은 명령을 Heroku가 다시 시작 :

heroku restart && heroku ps:restart

그것은 다음 괜찮 았는데.

+0

향후 사용 가능 - 먼저 시도해주세요.하지만 모든 사용자에게 적용되지는 않습니다. – azochz

관련 문제