0

モデルの1つにモジュールが含まれています。私のユーザーモデルに固有であるdatabase_authenticatableが含まれています。

devise  :database_authenticatable

モジュールにメソッドvalid_password?(password)があります次のようにメソッドを上書きしたい

def valid_password?(password)
  if my_condition_is_true
    do_something_new()
  else
    # do  what valid_password(password) always does
  end
end

私の他の場合、database_authenticatable.rbモジュールのvalid_password()の代わりに定義されているものをコピーすることを考えていますが、それを実行するように指示する方法があるかどうか疑問に思っていますか?継承のように私はスーパーを行うことができますか?

また、valid_passwordメソッドを呼び出した後、モジュールのvalid_passwordメソッドを呼び出した後、これを回避する方法がわからないことに気づきました。

4

1 に答える 1

1

変更をモジュールとして記述してインクルードすると、前のメソッドでモジュールがロードされた方法と同様にロードされます。これができれば、super正しく呼び出すことができるはずです。

いくつかのアイデアについては、このスレッドをご覧ください (もちろん、コードの残りの部分がどのように見えるかによって異なります): Rails 3: alias_method_chain still used?

于 2012-08-28T01:15:03.520 に答える