Пытался использовать Devise 1.0.6 в Rails 2.3.5 проекте (я знаю, что это немного старая версия). Я использовал инструкции здесь для настройки устройства. Регистрация работает нормально, но при входе поле пароля очищается и ничего не происходит. В журнале не отображается ошибка. admin_signed_in?
дает не вошедший в систему.
при входе контроллер создает действие следующим образом:
def create
if resource = authenticate(resource_name)
set_flash_message :notice, :signed_in
sign_in_and_redirect(resource_name, resource, true)
elsif [:custom, :redirect].include?(warden.result)
throw :warden, :scope => resource_name
else
set_now_flash_message :alert, (warden.message || :invalid)
clean_up_passwords(build_resource)
render_with_scope :new
end
end
authenticate () метод в модели, как показано
def authenticate(attributes={})
return unless authentication_keys.all? { |k| attributes[k].present? }
conditions = attributes.slice(*authentication_keys)
resource = find_for_authentication(conditions)
resource if resource.try(:valid_for_authentication?, attributes)
end
проверено resource
в модели и возвращает верную запись. но это не доходит до контроллера. в контроллере authenticate(resource_name)
возвращает nil
helper.rb
def authenticate(scope)
warden.authenticate(:scope => scope)
end
Область действия действительна, а warden.authenticate(:scope => scope)
возвращает значение NULL.