RoR devise: sign_in всегда возвращает неверный адрес электронной почты/пароль

Каждый раз, когда я вхожу в систему, я получаю сообщение об ошибке, что адрес электронной почты/пароль недействителен.

маршруты:

devise_for :users

devise_scope :users do
  get '/users/sign_out' => 'devise/sessions#destroy', :as => :destroy_user_session
  post '/users/sign_in' => 'devise/sessions#create', :as => :user_session
end

resources :users

модель пользователя:

devise :database_authenticatable, :confirmable, :recoverable, :rememberable, :trackable

attr_accessor :password
attr_accessible :first_name, :last_name, :email, :password, :password_confirmation, :gender, :remember_me

Вид:

<% if signed_in?(:user) %>
   Hi <%= current_user.first_name %>. | Not you? <%= link_to 'Sign out', destroy_user_session_path, :method => :delete %>
<% else %>
   <%= link_to 'Sign up', signup_path %> or <%= link_to 'Sign in', user_session_path, :method => :create %>
<% end %>

Я попытался изменить маршруты:

get '/users/sign_in' => 'devise/sessions#new', :as => :new_user_session

и изменения соответствующих путей, но это ничего не изменило.

Я даже изменил код в представлении:

if signed_in?(:user)

в

if user_signed_in?

и сделал комбинацию этих вещей, и ничего не работает.

Я также попросил разработчика обработать подтверждение, которое я сделал, скопировав сгенерированную ссылку на браузер, и в первый раз меня подписывает как пользователь. Он также позволяет мне сменить пароль по ссылке подтверждения по электронной почте, которая также меня подписывает при смене пароля. Но как только я выхожу и запишусь, он сообщает мне, что адрес электронной почты снова недействителен.

Может ли кто-нибудь помочь?

Я использую рельсы 3.0.7, разрабатываю 1.4.5, capybara 1.1.1, огурец 1.0.6, mysql2 0.2.6 и грабли 0.8.7, если это кому-то помогает.

Спасибо

EDIT:

Чтобы помочь будущим пользователям, на самом деле нет ничего плохого в этом камне. Он работает нормально. Проблема связана с моей базой данных. По какой-то причине он выбирает NULL-адрес электронной почты из базы данных вместо того, чтобы вытаскивать информацию пользователя, с которым я пытаюсь войти. Я выясню, как исправить это сейчас, и обновляю его, как только я это выясню.

Ответы

Ответ 1

У меня была аналогичная проблема при новой установке Devise, но я обнаружил, что если я запустил bundle update, то перезапустил мой dev-сервер, он будет работать.

Сначала я не видел запрос БД в development.log, но как только я обновил свой Gemfile (чтобы убедиться, что я использую последний камень Devise) и перезапустил сервер, теперь я вижу запросы db в мой файл журнала и работает (магически).

Надеюсь, что это поможет.

Btw, не уверен, что это поможет вам... но это маршруты в моем Routes.rb

 devise_for :users, :path_names => { :sign_up => "register", 
                                      :sign_in => "login", 
                                      :sign_out => "logout",
                                      :settings => "settings" }

  devise_scope :user do
    get "login", :to => "devise/sessions#new"
    get "register", :to => "devise/registrations#new"
    get "settings", :to => "devise/registrations#edit"
    get "logout",   :to => "devise/sessions#destroy"

  end

Ответ 2

Я столкнулся с этой проблемой, когда у меня были оба

config.authentication_keys = [ :username ]

и

config.authentication_keys = [ :email ]

включается одновременно в config/initializers/devise.rb.


После удаления настройки дубликата проверка подлинности прошла успешно.

Ответ 3

Когда я столкнулся с этой проблемой, я вернулся через конфигурационный файл Devise в

конфигурации/Инициализаторы/devise.rb

Затем я нашел часть, которую я помню, я изменил ее на: username

config.authentication_keys = [ :username ]

Я изменил это на :email. Это в конечном итоге заставило его работать.

Ответ 4

Я думаю, что attr_accessor работает с attr_accessible. Вам действительно нужно иметь attr_accessor?, если не просто удалить его.

Попробуйте и сообщите мне, как это происходит.

С наилучшими пожеланиями

ЭД

Ответ 5

Имя пользователя и пароль могут быть чувствительны к регистру. Вы проверили, как имя пользователя хранится в вашей таблице, чтобы убедиться, что вы вводите его правильно?

По моему опыту, когда он говорит вам, что адрес электронной почты/пароль неверен, вы можете отвлечься от множества сложных идей, но в конечном итоге это означает, что адрес электронной почты или пароль неверны. Похоже, вы пробовали разные времена с сбросом пароля, поэтому меня заставляет задуматься о имени пользователя. Вы уверены, что правильное поле настроено в качестве имени пользователя (то есть оно может быть электронной почтой или именем пользователя)?

Ответ 6

config.authentication_keys = [: имя_пользователя]

и

config.authentication_keys = [: email]

который одновременно устанавливается в config/initializers/devise.rb, вызывает эту ошибку.