0

ユーザーがパスワードを更新すると、アプリで何らかの理由で検証がスキップされます。それを変えるのを手伝ってください。

更新方法:

def update
  if params[:user][:password]
    if current_user
      user = User.authenticate(params[:email], params[:user][:old_password])
      if user
        params[:user].delete :old_password
        if user.save
          redirect_to root_url, :notice => "Password has been changed!"
        else
          render 'edit'
        end
      else
        # old_password was incorrect
      end
    else
      # changing password while logged out
    end  
  end
end

ユーザーモデル:

class User < ActiveRecord::Base
      attr_accessible :email, :password, :password_confirmation
      attr_accessor :password
      before_save :encrypt_password
      VALID_PASSWORD_REGEX = /^(?=.*[a-zA-Z])(?=.*[0-9]).{6,}$/
      validates_confirmation_of :password
      validates :password, presence: true, format:{  with: VALID_PASSWORD_REGEX }, if: proc{ password_salt.blank? || password_hash.blank? } 
end
4

1 に答える 1

0

ユーザーのパスワードを更新する方法が必要な場合は、次の方法が役立ちます。

https://stackoverflow.com/a/19697808/1758714

私は認証に Sorcery を使用しているので、コードを少し変更する必要があるかもしれません。

于 2013-11-05T06:20:25.537 に答える