如何在Devise中覆盖valid_password?(密码)

时间:2012-08-28 17:21:49

标签: ruby-on-rails ruby devise

我的用户模型使用Devise进行身份验证,我希望覆盖valid_password方法,在我的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

首先我们通过设计包含database_authenticatable然后包含我的PostDatabaseAuthenticatable,所以根据我读到的Rails 3: alias_method_chain still used?它应该完全覆盖devise的valid_password方法。

但是当我运行我的代码时,它总是首先调用它,然后调用devise,所以根本不会覆盖它。

任何想法为什么?

1 个答案:

答案 0 :(得分:1)

实际上这一直在起作用,我调试错了。 此外,我不需要模块覆盖,只需创建一个valid_password?(密码)方法insdie用户类完成工作