Контроллер пользовательских регистраций для Devise не переопределяет действие Create - PullRequest
2 голосов
/ 02 октября 2011

Я боролся с этим уже несколько дней.Я создал свой собственный контроллер регистрации, чтобы amdin мог создавать и удалять пользователей.Я оставил модуль :registerable в своей конфигурации устройства, так как я также хочу, чтобы пользователи могли редактировать свои профили.Я попытался вынуть этот модуль, чтобы посмотреть, решит ли он мою проблему.Проблема, с которой я столкнулся, заключается в том, что когда я создаю нового пользователя в качестве администратора, он по-прежнему регистрирует этого пользователя, несмотря на то, что у меня есть собственное действие создания.Я перепробовал все, что мог придумать, чтобы выйти за рамки этого, и я застрял.

Мой контроллер регистрации:

  class RegistrationsController < Devise::RegistrationsController

  load_and_authorize_resource

  def new
    super
  end

  def create
    resource.build
    if resource.save
      redirect_to users_path
    else
      clean_up_passwords(resource)
      render_with_scope :new
    end
  end

end

Контроллер приложения: => примечание, after_sign_up_path_for было переопределено здесьв качестве теста, чтобы увидеть, будет ли это работать

class ApplicationController < ActionController::Base

  protect_from_forgery

  rescue_from CanCan::AccessDenied do |exception|
    flash[:error] = exception.message
    redirect_to projects_url
  end

  protected

    def stored_location_for(resource)
      nil
    end

    def after_sign_in_path_for(resource)
      projects_url
    end

    def after_sign_up_path_for(resource)
      users_path
    end

end

Файл маршрутов:

DeviseTest::Application.routes.draw do

  devise_for :users, :controller => { :registrations => "registrations"}
  devise_scope :user do
    get '/login' => 'devise/sessions#new'
    get '/logout' => 'devise/sessions#destroy'
  end

  resources :users, :controller => "users"

  resources :projects

  root :to => 'home#index'

  end

И мой контроллер пользователя для представления администратора

class UsersController < ApplicationController

  load_and_authorize_resource

  # GET /users
  # GET /users.xml
  def index
    @users = User.excludes( :id => current_user.id )

    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @users }
    end
  end

  # DELETE /users/1
  # DELETE /users/1.xml
  def destroy
    @user = User.find(params[:id])
    @user.destroy

    respond_to do |format|
      format.html { redirect_to(users_url) }
      format.xml  { head :ok }
    end
  end
end

Rake Routes Output:

new_user_session GET    /users/sign_in(.:format)       {:action=>"new", :controller=>"devise/sessions"}
            user_session POST   /users/sign_in(.:format)       {:action=>"create", :controller=>"devise/sessions"}
    destroy_user_session DELETE /users/sign_out(.:format)      {:action=>"destroy", :controller=>"devise/sessions"}
           user_password POST   /users/password(.:format)      {:action=>"create", :controller=>"devise/passwords"}
       new_user_password GET    /users/password/new(.:format)  {:action=>"new", :controller=>"devise/passwords"}
      edit_user_password GET    /users/password/edit(.:format) {:action=>"edit", :controller=>"devise/passwords"}
                         PUT    /users/password(.:format)      {:action=>"update", :controller=>"devise/passwords"}
cancel_user_registration GET    /users/cancel(.:format)        {:action=>"cancel", :controller=>"devise/registrations"}
       user_registration POST   /users(.:format)               {:action=>"create", :controller=>"devise/registrations"}
   new_user_registration GET    /users/sign_up(.:format)       {:action=>"new", :controller=>"devise/registrations"}
  edit_user_registration GET    /users/edit(.:format)          {:action=>"edit", :controller=>"devise/registrations"}
                         PUT    /users(.:format)               {:action=>"update", :controller=>"devise/registrations"}
                         DELETE /users(.:format)               {:action=>"destroy", :controller=>"devise/registrations"}
                   login GET    /login(.:format)               {:controller=>"devise/sessions", :action=>"new"}
                  logout GET    /logout(.:format)              {:controller=>"devise/sessions", :action=>"destroy"}
                   users GET    /users(.:format)               {:action=>"index", :controller=>"users"}
                         POST   /users(.:format)               {:action=>"create", :controller=>"users"}
                new_user GET    /users/new(.:format)           {:action=>"new", :controller=>"users"}
               edit_user GET    /users/:id/edit(.:format)      {:action=>"edit", :controller=>"users"}
                    user GET    /users/:id(.:format)           {:action=>"show", :controller=>"users"}
                         PUT    /users/:id(.:format)           {:action=>"update", :controller=>"users"}
                         DELETE /users/:id(.:format)           {:action=>"destroy", :controller=>"users"}
                projects GET    /projects(.:format)            {:action=>"index", :controller=>"projects"}
                         POST   /projects(.:format)            {:action=>"create", :controller=>"projects"}
             new_project GET    /projects/new(.:format)        {:action=>"new", :controller=>"projects"}
            edit_project GET    /projects/:id/edit(.:format)   {:action=>"edit", :controller=>"projects"}
                 project GET    /projects/:id(.:format)        {:action=>"show", :controller=>"projects"}
                         PUT    /projects/:id(.:format)        {:action=>"update", :controller=>"projects"}
                         DELETE /projects/:id(.:format)        {:action=>"destroy", :controller=>"projects"}
                    root        /(.:format)                    {:controller=>"home", :action=>"index"}

Все остальное работает как положено, я просто не могу заставить созданного пользователя не входить в систему. Это не большая проблема для создания одного пользователя, но если мне нужно создать 3 или 4, этоОгромная лава, которую нужно подписывать, регистрироваться каждый раз.

Любая помощь в этом очень ценится.

1 Ответ

3 голосов
/ 02 октября 2011

В третьей строке вашего файла rout.rb я имею в виду :controllers => …, а не :controller => … Вы пропускаете 's'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...