2012-03-16 1 views
0

私は、Devise/cancanを使用して認証するためのTony Amoyalの設定に従い、新しいユーザーを作成/ユーザーはこのアプリケーションで複数の役割を果たす必要はないので、私は彼に従っていませんでしたが、大部分は彼が提案したものを正確に使用しました。adminユーザーに他のユーザーを作成させようとしても、投稿後にユーザーを編集することになります

ほとんどの場合、私が今直面している最大の問題は、新しいユーザーを作成して登録フォームに送信しようとするとすぐに不平を言い、Deviseの編集登録フォームに入り、 current_passwordフィールドが入力されていません。その時点で何かを入力すると、登録しようとしていたユーザーではなく、MYユーザーが更新されます。

これ以上の変更を要求するのではなく、実際にユーザーを作成するための助けがあれば幸いです。

#コントローラ/ユーザ/ 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 

#ビュー/ユーザー/ 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' 

答えて

0

私は、このプロセスが私のUsersControllerを使用していることを保証するpath_prefixをdeviseに与えることでこの問題を回避することができました。

関連する問題