Попытка сделать так, чтобы пользователь-администратор создавал других пользователей, но после отправки мне остается редактировать пользователя - PullRequest
0 голосов
/ 17 марта 2012

Я следил за настройкой Тони Амояла для аутентификации с использованием Devise / cancan и позволял только администратору создавать / регистрировать новых пользователей.Я не следовал за ним точно, потому что пользователям не нужно иметь несколько ролей в этом приложении, но по большей части я использовал именно то, что он предложил.

В основном это работает, но самая большая проблема для менясейчас, когда я пытаюсь создать нового пользователя и отправить его в форму регистрации, он сразу же жалуется, берет меня в форму редактирования редактирования Devise и жалуется на то, что поле: current_password не заполняется. Если я что-то заполняю при этомточка, это обновит МОЙ пользователь, а не тот, которого я пытался зарегистрировать.

Буду признателен за любую помощь в создании пользователя, вместо того, чтобы запрашивать дополнительные изменения.

# контроллеров / пользователей / registrations_controller.rb

    class Users::RegistrationsController < Devise::RegistrationsController
      before_filter :check_permissions, :only => [:new, :create, :cancel]
      skip_before_filter :require_no_authentication

      def check_permissions
        authorize! :create, resource
      end
    end

# контроллеров / users_controller.rb

    class UsersController < ApplicationController
      load_and_authorize_resource :except =>[:create]
      ...
      def new
        respond_to do |format|
          format.json { render :json => @user }   
          format.xml  { render :xml => @user }
          format.html
        end
      end
      ...

      def create
        @user = User.new(params[:user])

        if @user.save
          respond_to do |format|
            format.json { render :json => @user.to_json, :status => 200 }
            format.xml  { head :ok }
            format.html { redirect_to :action => :index }
          end
       else
         respond_to do |format|
           format.json { render :text => "Could not create user", :status => :unprocessable_entity } # placeholder
           format.xml  { head :ok }
           format.html { render :action => :new, :status => :unprocessable_entity }
         end
       end
     end
   end

# views / users / new.html.haml

    = simple_form_for(@user, :method => :put, :html => {  :class=>'form-horizontal' }) do |f|
  %fieldset
    %legend
      = f.input :first_name
      = f.input :last_name
          = f.input :email
          = f.input :password
          = f.input :password_confirmation

       .form-actions
         = f.submit 'Register', :class => 'btn btn-primary'
         = link_to 'Back', :back, :class => 'btn'

1 Ответ

0 голосов
/ 18 марта 2012

Мне удалось обойти эту проблему, предоставив dev_wap_prefix, который бы гарантировал, что этот процесс использует мой UsersController.

...