Почему НЕ вызывается этот метод переопределения Ruby

Я подкласс Devise::PasswordsController

https://github.com/plataformatec/devise/blob/master/app/controllers/devise/passwords_controller.rb

class MyPasswordsController < Devise::PasswordsController

protected

# Reference: https://github.com/plataformatec/devise/blob/master/app/controllers/devise/passwords_controller.rb
def unlockable?(resource)
v = resource.respond_to?(:unlock_access!) &&
resource.respond_to?(:unlock_strategy_enabled?)
# && resource.unlock_strategy_enabled?(:none) # sets to :none

puts "##############################"puts v
puts "##############################"
return v
end
end

У меня также есть маршруты:

devise_for :users, :controllers => {:passwords => :my_passwords}

Я уверен в том что Devise::PasswordsController::update называется, но почему бы рубину не поднять мой MyPasswordsController::unlockable? метод (он должен быть вызван в update метод?

РЕДАКТИРОВАТЬ

То, что я пытаюсь сказать, это следующий код на C ++. Ruby ведет себя по-другому?

#include <iostream>
using namespace std;

class Base
{
public:
virtual void VirtualMethod()
{
cout << "Base::VirtualMethod" << endl;
VirtualMethodSub();
}

virtual void VirtualMethodSub()
{
cout << "Base::VirtualMethodSub" << endl;
}
};

class Dervied : public Base
{
virtual void VirtualMethodSub()
{
cout << "Derived::VirtualMethodSub" << endl;
}
};

int main()
{
Dervied d;
d.VirtualMethod();

return 0;
}
/* Output:
Base::VirtualMethod
Derived::VirtualMethodSub
*/

0

Решение

Вы просматриваете хит PasswordsController # update. Не MyPasswordsController # обновление. Так что реализуйте свой собственный PasswordsController, расширяясь от контроллера Devise :: Passwords.

class PasswordsController < Devise::PasswordsController
protected
def unlockable?(resource)
end
end

И в вашем конфиге / rout.rb, Добавить

devise_for :users, :controllers => {:passwords => 'passwords'}

Если ваш ресурс не является пользователем, замените его на имя ресурса.

0

Другие решения

Оказывается, я использую Devise 2.1.2 и ссылку:
https://github.com/plataformatec/devise/blob/master/app/controllers/devise/passwords_controller.rb

для последней версии Devise.

0

По вопросам рекламы [email protected]