3

Deviseで認証するUserモデルがあり、このように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

したがって、最初にdeviseを介してdatabase_authenticatableを含め、次にPostDatabaseAuthenticatableを含めて、Rails 3を読んだ内容に従って:alias_method_chainはまだ使用されていますか?deviseのvalid_passwordメソッドを完全に上書きする必要があります。

しかし、コードを実行すると、常に最初にこれが呼び出され、次にdeviseと呼ばれるものが作成されないため、上書きされません。

なぜ何かアイデアはありますか?

4

1 に答える 1

1

実際、これはずっと機能していましたが、間違ってデバッグしていました。また、モジュールのオーバーライドは必要ありません。ユーザー クラスの有効な_パスワード?(パスワード) メソッドを作成するだけで問題は解決します。

于 2012-08-28T17:35:23.537 に答える