2011-08-06 242 views
1

我目前使用Cancan,我的用户基本上有不同的'角色'。 我只希望人们能够注册'消费者'用户帐户,并且商业帐户管理员将会这样做。Rails NameError(未初始化常量注册):

所以,现在我有这个在我的ability.rb

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

,并在我的控制器/用户/ registrations_controller.rb

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

和配置/ routes.rb中:

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

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

+0

如果卸下'ability.rb'行不问题消失? –

+0

任何运气修复此? – ZMorek

回答

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的控制器。只需创建一个。

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 
相关问题