2017-06-07 14 views
0

入力(ユーザー)パスワードを更新すると、検証の実行を停止する方法を教えてください。ユーザーはパスワードを更新できません。deviseパスワードの変更で実行されている検証

How To: Allow users to edit their password

しかし、私は唯一の標準的な動作をやろうとしているとして、これは必要であるかどうかわからない -

class Entrant < ActiveRecord::Base 

    devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable 

    validates :first_name, presence: true, on: :create 
    validates :last_name, presence: true, on: :create 

    validates :title, presence: true, on: :update 

は、ここで説明する手順を実行しようとしました。

ルート -

Rails.application.routes.draw do 



    get 'messages/judge_logout/' => "messages#judge_logout", :as => 'messages_judge_logout' 
    get 'exporter/entrant' 
    get 'exporter/entries' 
    get 'exporter/results' 
    get 'exporter/registered_not_entered' 
    #get 'judge/index' 
    #get 'judge/show' 
    resources :judge, :only =>[:show,:index] 

    get 'all_entries/list', as: 'all_entries_list' 
    get 'all_entries/final_scores', as: 'all_scores_list' 
    get '/all_entries/list', as: :admin_root 
    resources :entries 

    devise_for :entrants, :controllers => { registrations: 'registrations' } 
    devise_for :judges, :controllers => { sessions: 'judges/sessions' } 
    devise_for :admins 

    resources :charges 
    resources :votes, :only =>[:create,:update] 

コントローラ -

class RegistrationsController < Devise::RegistrationsController 


    private 

    def sign_up_params 
    params.require(:entrant).permit(:first_name, :last_name, :email, :password, :password_confirmation) 
    end 

    def account_update_params 
    params.require(:entrant).permit(:first_name, :last_name, :email, :password, :password_confirmation, :current_password, :title, :address, :postcode, :main_phone_number, :secondary_phone_number, :website, :dob, :place_of_birth, :place_of_education, :degree_attained, :how_did_you_hear_about_newlight, :terms_of_service) 
    end 


    def after_update_path_for(resource) 
    #edit_entrant_registration_path(resource) 
    entries_path 
    end 

    def after_sign_up_path_for(resource) 
    edit_entrant_registration_path(resource) 
    end 

    def after_sign_in_path_for(resource) 
    entries_path 
    end 

end 
+0

てみ '検証:パスワード、存在感を:真、上:create' – Pavan

+0

あなたのコントローラと関連するルートを投稿することができますか? – jdgray

+0

ありがとう、私は質問を更新しました。真剣にこれに固執し、私はアプリを継承しました。 – AndrewJL

答えて

0

私は、検証が更新時に実行されているために問題が発生していることが判明しました。つまり、モデルパスワードが変更されたときに検証が実行されています。 unless条件を追加すると、検証が中止されました。

Answer to problem

0

あなたは、ユーザーのパスワードを更新するために工夫が提供するuser_registrationメソッドを使用することもできます。

<%= form_for(resource, as: resource_name, url: user_registration_path(resource_name), html: {method: :put}) do |f| %> 
<%= f.password_field :current_password %> 
<%= f.password_field :password %> 
<%= f.password_field :password_confirmation %> 
<%= f.submit %> 
<% end %> 
関連する問題