Rails NameError(未初始化的常量注册):

时间:2011-08-06 22:49:03

标签: ruby-on-rails devise cancan

我目前正在使用Cancan,我的用户基本上有不同的“角色”。 我只希望人们能够注册“消费者”用户帐户,而对于企业帐户,管理员将会这样做。

所以现在,我的能力就是这个.rb

  def initialize(user)
    user ||= User.new  
    ... 
    # You can only create accounts that are consumers
    can :create, User do |user|
      user.role? :consumer 
    end

并在我的controller / users / registrations_controller.rb

class Users::RegistrationsController < Devise::RegistrationsController
  load_and_authorize_resource
end

和config / routes.rb:

  devise_for :users, :controllers => { 
    :registrations => "users/registrations"
  }

现在,当我访问注册页面时,我看到“未初始化的常量注册”,无任何堆栈跟踪。有任何想法吗?

2 个答案:

答案 0 :(得分:0)

我的代码示例

class ApplicationController < ActionController::Base
  authorize_resource
  check_authorization
end

class Users::SessionsController < Devise::SessionsController
  skip_authorize_resource
  skip_authorization_check
end

对于load_and_authorize_resource,您需要skip_load_and_authorize_resource。所有这些代码都适用于自定义devise的控制器。只需创建一个。

答案 1 :(得分:0)

问题在于路线,请按照以下步骤进行操作

 1. $ rake routes, you will see the list of routes 

 2. In your config/routes.rb write the route you need, In my case the route to create a new user was,     
   devise_for :users,  :controllers => { :new_user_registration => "users/registrations#new" }
 3. restart rails server