3

我让我的用户模型使用 Devise 进行身份验证,我想在我的类定义中的 user.rb 中覆盖 valid_password 方法

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_authenticable 然后包含我的 PostDatabaseAuthenticatable 所以根据我读到的Rails 3: alias_method_chain 仍然使用?它应该完全覆盖设计的 valid_password 方法。

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

任何想法为什么?

4

1 回答 1

1

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

于 2012-08-28T17:35:23.537 回答