Перенос существующей пользовательской модели в Devise - PullRequest
1 голос
/ 28 апреля 2011

Я пытаюсь перенести устаревшее приложение на Rails 3 и изменить аутентификацию для использования Devise.Я создал модель и миграции и импортировал все пользовательские данные.

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

В идеале я хотел бы отловить ошибку при входе в систему, а затем проверить пароль в устаревшем поле и затем обновить его с помощью пароля, если он совпадает.

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

Однако, поскольку все пароли (в Devise) пустые, я получаю ошибки, связанные св хеш, так как поля encrypted_password пусты.

Есть ли способ обновить все учетные записи пользователей случайным паролем?

Я видел в Devise :: Models :: DatabaseAuthenticatableчто есть метод 'password =', но если я его так называю, например, в консоли rails для приложения:

User.find(1).password=('new')
 => "new"

Я просто получаю ту же строку простого текста ('new') и сохраняю пользователязапись, это не заполняет поле encrypted_password.

Я искал вокруг, но не могу найти его.Любые предложения приветствуются!

1 Ответ

1 голос
/ 30 апреля 2011

Ладно, на случай, если кто-то еще с таким же настроением, как и я, последние 24 часа, вот как вы устанавливаете пароль:

user = User.find(id)
user.password = 'new-password'
user.save

Все просто:)

...