私は、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'