2

Railscastのエピソード250を改訂して、has_secure_passwordを使用してユーザー認証を作成しました。これは適切に機能します。ただし、ユーザープロファイルを更新しようとすると、パスワードとパスワードの確認が必要になるため、明らかに問題が発生します。

明らかに、これをそのまま上書きする方法はないので、secure_password.rbというファイルを作成し、それをconfig / initializersフォルダーに入れて、既存のファイルの内容をコピーしました。

私の質問はこれです-コントローラーアクションの更新/編集の場合、パスワードとパスワードの確認が存在する必要がないことを示すために、このファイルに条件を渡す方法はありますか?

私の現在のコードは以下にあります。

  def has_secure_password
    gem 'bcrypt-ruby', '~> 3.0.0'
    require 'bcrypt'

    attr_reader :password

    validates_confirmation_of :password
    validates_presence_of     :password_digest

    include InstanceMethodsOnActivation

    if respond_to?(:attributes_protected_by_default)
      def self.attributes_protected_by_default
        super + ['password_digest']
      end
    end
  end
4

1 に答える 1

1

password_confirmation明示的に に設定されているnil場合、確認の検証はチェックされません。これはRails の pull-requestで参照されており、必要かどうかを判断するための条件値を持​​つことを提案していますpassword_confirmation

Railscasts #250 では、単純にpassword_confirmation-field を削除createし、Users-controller の -action を次のように変更します。

def create
  @user = User.new(params[:user])
  @user.password_confirmation = nil  # Disables confirmation check
  if @user.save
    redirect_to root_url, :notice => "Signed up!"
  else
    render "new"
  end
end
于 2012-11-26T11:20:37.513 に答える