2016-12-12 5 views
1

관리자 계정 만 새 사용자 계정을 만들 수있는 응용 프로그램을 만들고 있습니다. 나는 인증을 위해 devise 4.2를 사용하고 레일 4.2.6을 사용하여 인증을 위해 cancancan을 사용하고 있습니다. 내 문제는 새로운 사용자가 생성되지 않고 오류 메시지가 표시되지 않으므로 잘못된 점을 알지 못합니다. 내 등록 컨트롤러 :새 사용자가 저장되지 않음을 알려주십시오.

class Users::RegistrationsController < Devise::RegistrationsController 
    before_action :configure_sign_up_params, only: [:create] 
    before_action :configure_account_update_params, only: [:update] 
    #before_action :authorize_admin, only: [:create, :new, :destroy] 
    before_action :authenticate_user! 
    load_and_authorize_resource 

    # GET /resource/sign_up 
    def new 
    super 
    end 

    # POST /resource 
    def create 
    build_resource(sign_up_params) 

    resource.save 
    yield resource if block_given? 
    if resource.persisted? 
     if resource.active_for_authentication? 
     set_flash_message! :notice, :signed_up 
     #sign_up(resource_name, resource) 
     respond_with resource, location: after_sign_up_path_for(resource) 
     else 
     set_flash_message! :notice, :"signed_up_but_#{resource.inactive_message}" 
     expire_data_after_sign_in! 
     respond_with resource, location: after_inactive_sign_up_path_for(resource) 
     end 
    else 
     clean_up_passwords resource 
     set_minimum_password_length 
     respond_with resource 
    end 
    end 

    # GET /resource/edit 
    def edit 
    super 
    end 

    # PUT /resource 
    def update 
    super 
    end 

    # DELETE /resource 
    def destroy 
    super 
    end 

    def cancel 
    super 
    end 

    protected 

    def configure_sign_up_params 
    devise_parameter_sanitizer.permit(:sign_up, keys: [:name]) 
    end 

    def configure_account_update_params 
    devise_parameter_sanitizer.permit(:account_update, keys: [:name]) 
    end 

    def after_sign_up_path_for(resource) 
    super(resource) 
    end 

    def after_inactive_sign_up_path_for(resource) 
    super(resource) 
    end 
end 

내보기 : 나는 계정 생성에 새 사용자의 징후가 내가 "당신은 이미에 기록됩니다"라는 플래시 메시지를 받고 있었기 때문에 라인에서 주석

<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %> 
    <%= devise_error_messages! %> 

    <div class="field"> 
    <%= f.label :name %> 
    <%= f.text_field :name %> 
    </div> 

    <div class="field"> 
    <%= f.label :email %><br /> 
    <%= f.email_field :email%> 
    </div> 

    <div class="field"> 
    <%= f.label :password %> 
    <% if @minimum_password_length %> 
    <em>(<%= @minimum_password_length %> characters minimum)</em> 
    <% end %><br /> 
    <%= f.password_field :password, autocomplete: "off" %> 
    </div> 

    <div class="field"> 
    <%= f.label :password_confirmation %><br /> 
    <%= f.password_field :password_confirmation, autocomplete: "off" %> 
    </div> 

    <div class="actions"> 
    <%= f.submit "Sign up" %> 
    </div> 
<% end %> 

<%= render "devise/shared/links" %> 

관리자로 로그인 한 상태에서 새 사용자를 만들면 새로운 사용자가 저장되지 않는 이유라고 생각하게되었습니다. 새로운 사용자를 만들려고 할 때 같은 메시지를 보내는 플래시 메시지가 계속 나오지만 이것은 잘못된 것으로 보입니다. 어떤 도움을 주셔서 감사합니다.

답변

0

관리자 사용자가 사용자를 만들 수 있도록하는 것이 목표 인 것 같습니다. 이 경우 등록이 아닌 사용자를 실제로 만들어야합니다. , 당신이 새로운 사용자로 등록하려는 의미, 새 등록을 Users::RegistrationsController에서을 만들 때

def create 
    @user = User.create params 
end 

: 이것은 당신이 뭔가를 할 것이다 (아마 UsersController에서) 컨트롤러 방법 중 하나에 의미 하지만 이미 로그인 했으므로 문제가되지 않습니다.