Какова может быть причина того, что Devise не хранит пароль моих пользователей при регистрации? - PullRequest
1 голос
/ 05 января 2012

Мое приложение rails (использующее Devise для аутентификации) позволяет пользователю зарегистрироваться без каких-либо проблем (оно отображает сообщение об успехе и позволяет новому пользователю использовать приложение во время этого сеанса), однако, если пользователь выходит из системы, он может не входите снова (во флэш-сообщении написано «Неверный адрес электронной почты или пароль»).

При просмотре в базе данных причина этого выглядит ясной: пользователь был сохранен в таблице Users (там есть его имя и адрес электронной почты из формы регистрации), но в столбце encrypted_password ничего нет.

Есть идеи, что может быть причиной этого? Я надеюсь, что это что-то глупое и очевидное, что я не вижу недостатка сна. ;)

У меня есть сгенерированные представления для устройства, а также контроллер регистрации. Но переименование их и удаление любых ссылок на них в маршрутах .rb не решает проблему.

Материал для разработки и регистрации пользователей из моей модели User выглядит так:

require 'digest'
class User < ActiveRecord::Base

  #### DEVISE MODULES #### Others available are:
  #### :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

  validates_presence_of :name
  validates_uniqueness_of :name, :email, :case_sensitive => false   

  attr_accessor :password

  attr_accessible :name, :email, :password, :password_confirmation, :remember_me  

Вероятно, стоит отметить, что я перешел на Devise с пользовательской системы аутентификации (построенной по старому учебнику Rails).

1 Ответ

3 голосов
/ 05 января 2012

Это скорее всего из-за attr_accessor :password.Devise уже определяет средства доступа для password и password_confirmation, вы перезаписываете устройства доступа.

...