簡體   English   中英

未定義的方法'角色?' 對於用戶

[英]Undefined method 'role?' for User

我有以下abilities模型:

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

我究竟做錯了什么?

我使用以下命令重新啟動了heroku:

heroku restart && heroku ps:restart

它工作得很好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM