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
は私が間違って何をしているのですか?
データベースを移行しましたか? –
私たちに 'user.rb'モデルを見せてください、私は実際にこのメソッドを持っていますか、またはユーザーテーブルはブールフィールドの役割を持っていますか? –
@NeilMiddletonはい、新しいherokuアプリを作成してもう一度やり直してください。 – jrg