Не берите в голову, что я нашел проблему и вероятно решение также. Я выкладываю это здесь, так что это поможет кому-то еще с подобной проблемой.
В моем приложении я первоначально использовал authlogic
gem для аутентификации, но недавно я переключил его на devise
для лучшей поддержки. Но я все еще хотел позволить старым пользователям входить в приложение с теми же паролями. Поэтому я переопределил шифрование устройства от Bcrypt до sha512 Authlogic, как показано ниже.
конфиг / Инициализаторы / devise.rb
config.encryptor = :authlogic_sha512
Но я никогда не изменяю модель AdminUser
, чтобы соответствовать вышеуказанным изменениям.
Так что исправление должно быть в моей модели, я должен использовать :encryptable
и :encryptor => :authlogic_sha512
class AdminUser < ActiveRecord::Base
devise :database_authenticatable,
:recoverable, :rememberable, :trackable, :validatable,:encryptable, `:encryptor => :authlogic_sha512`
# Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation, :remember_me
end
А в файле миграции AdminUser должны быть включены шифруемые столбцы
create_table(:admin_users) do |t|
t.database_authenticatable :null => false
t.recoverable
t.rememberable
t.trackable
t.encryptable
# t.confirmable
# t.lockable :lock_strategy => :failed_attempts, :unlock_strategy => :both
# t.token_authenticatable
t.timestamps
end