Ответ 1
Общая информация:
Посмотрите Здесь вы найдете README.
В качестве примера, это вспомогательный метод, который вы можете использовать для этого теста:
class User
def self.authenticate(username, password)
user = User.find_for_authentication(:username => username)
user.valid_password?(password) ? user : nil
end
end
Проверяя это, я получаю:
1.9.3p194 :001 > user = User.find(1)
User Load (0.2ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 LIMIT 1
User id: 1, {...USER DETAILS SHOWN HERE...}
1.9.3p194 :002 > user.valid_password?('is this it?')=> false
Также работает: User.find(1).valid_password?('1')
в консоли Rails:
1.9.3p194 :011 > User.find(1).valid_password?('1')
User Load (0.3ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 LIMIT 1
=> false
Для справки, здесь моя настройка Devise для модели User:
class User < ActiveRecord::Base`
devise :database_authenticatable, :registerable, :timeoutable, :recoverable, :rememberable, :trackable, :validatable
{...}
end
Как вы сказали в комментариях, нет sessions_controller
с Devise. Просмотрите конфигурационный файл Devise в /config/initializers/devise.rb
. В зависимости от конфигурации вашего приложения вы также можете посмотреть конфигурацию инициализатора token.rb
и session_store.rb
.
РЕДАКТИРОВАТЬ: Можете ли вы проверить свою модель пользователя, чтобы увидеть, правильно ли она настроена для этого? Сравните это с моей линией devise
. Свойство :validatable
может отсутствовать.
EDIT 2: Добавлен вспомогательный метод для этого теста, если вы хотите сделать это за пределами консоли. Проверьте вверх.
Боковое примечание: rails_admin
gem очень полезен и может стоить проверить!
Надеюсь, что это поможет.