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