更新密码设计

时间:2017-09-25 13:08:16

标签: ruby-on-rails ruby devise

我的表单有update_without_password方法,但我知道如何在edit_user_registration_path更新我的密码。

我意识到如果我不提供当前密码,我就无法更改密码, 我可以使用update_wothout_password方法更改edit_user_form中的密码吗?

我的注册管理员:

def update_resource(resource, params)
    resource.update_without_password(params)
  end

  def after_update_path_for(resource)
      biens_path(resource)
  end

1 个答案:

答案 0 :(得分:1)

这就是我在大多数应用中设置用户的方式

在模型中我有一个方法should_validate_password?

# app/models/user.rb
class User < ApplicationRecord
  attr_accessor :updating_password
  ...
  def should_validate_password?
    updating_password || new_record?
  end
  ...
end

现在在控制器中我有一个前置过滤器

# app/controllers/users_controller.rb 
class UsersController < ApplicationController
  before_filter :check_password_submitted, :only => :update
  ...
  private
  def check_password_submitted
    if params[:user][:password].blank?
      params[:user].delete("password")
      params[:user].delete("password_confirmation")
      user.updating_password = false
    else
      user.updating_password = true
    end
  end
  ...
end

这对我有用