未定义方法的作用?为用户 [英] Undefined method 'role?' for User

查看:164
本文介绍了未定义方法的作用?为用户的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下能力模型:

  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

>我用以下命令重新启动了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆