未定义方法的作用?为用户 [英] Undefined method 'role?' for User
本文介绍了未定义方法的作用?为用户的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有以下能力模型:
class Ability
包括CanCan :: Ability
def初始化(用户)
用户|| = User.new#guest用户,未登录
如果用户。角色? ==:admin
can:manage,:all
else
can:read,:all
end
if user.role ==default
可以:创建,主屏幕
结束
可以:销毁,主屏幕do | homescreen |
homescreen.try(:user)==用户
结束
结束
结束
我有以下用户模型:
class User< ActiveRecord :: Base
devise:database_authenticatable,:可注册的,
:可恢复的,:可记录的,:可跟踪的,: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
如果self.role.blank?
self.role =默认
结束
结束
结束
当我在本地机器上运行它时,它工作正常。
但是,当我部署到heroku时,出现以下错误:
GET URL.herokuapp.com dyno = web.1 queue = 0 wait = 0ms service = 158ms status = 500 bytes = 643
app / models / ability.rb:7:在`initialize'
NoMethodError(未定义方法角色为#< User:0x00000003b56050>):
cache:[GET / ] miss
在2012-03-19 16:14:38 +0000
处启动了GET/for my-ipaddress NoMethodError(未定义方法角色为# < User:0x00000003df5d88>):
app / models / ability.rb:7:in`initialize'
cache:[GET /] miss
$ c $ >我用以下命令重新启动了heroku:
heroku restart&& heroku ps:重新启动
然后它正常工作。
I have the following abilities
model:
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
And I have the following users model:
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
When I run it on my local machine, it works fine.
However, when I deploy to heroku, I get the following error:
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
What am I doing wrong?
解决方案 I restarted heroku with the following command:
heroku restart && heroku ps:restart
It then worked fine.
这篇关于未定义方法的作用?为用户的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文