2012-03-19 13 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

関連する問題