我的用户模型正在使用devise进行身份验证,我想这样覆盖类定义中的user.rb中的有效密码方法

class User < ActiveRecord::Base
  devise  :database_authenticatable

  # overwriting the valid_password from database_authenticatable
  module PostDatabaseAuthenticatable

   def valid_password?(password)
    if old_password
      # do something new
    else
      # call valid_password from DatabaseAuthenticatable
      super
    end
   end

  end

  include PostDatabaseAuthenticatable

end

因此,首先我们通过devise包含数据库认证表,然后包含我的postdatabaseauthenticatable,因此根据我所读的内容,它应该完全覆盖devise的有效密码方法。
但当我运行我的代码时,它总是先调用这个,然后再调用desve的mather,所以根本不会覆盖它。
你知道为什么吗?

最佳答案

实际上这一直都在起作用,我调试错了。
我也不需要模块越界,只需要创建一个有效的密码?用户类的(password)insdie方法执行该任务

关于ruby-on-rails - 如何在Devise中覆盖valid_password?(password),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12164362/

10-14 03:26