Невозможно создать учетную запись Devise, используя rake db: seed для Rails 3.0 - PullRequest
8 голосов
/ 08 января 2011

Я пытаюсь предварительно загрузить все учетные записи разработчиков, используя rake db: seed.Кажется, что данные для всех других моделей вставлены в базу данных, но по какой-то причине для модели Person, которая использует devise, НЕТ строк создано.Регистрация через веб-интерфейс работает нормально, но я хочу избежать создания учетных записей вручную, поэтому я использую rake db: seed.Я скопировал encrypted_password, password_salt из учетной записи, созданной через веб-интерфейс.Пожалуйста, дайте мне знать, как обойти это?Большое спасибо ..

people = Person.create(
                        :email => 'nnn@gmail.com',
                        :encrypted_password => '$2a$10$SyacAOhJQtVeTcTPYm.ROuFbhGMylfj4fLrK3NHyeRwfEokKp2NVW',
                        :password_salt => '$2a$10$SyacAOhJQtVeTcTPYm.ROu',
                        :first_name => "nnn",
                        :last_name => "yyy"
                       )


in routes.rb i have.

    devise_for :people

Ответы [ 3 ]

24 голосов
/ 08 января 2011

Я делал это с помощью Devise в прошлом. Я не пытался установить зашифрованный пароль и соль таким образом. Я просто установил пароль и подтверждение примерно так (мой проект не пригодился):

Person.create(:email => 'nnn@gmail.com', :password => 'foobar', :password_confirmation => 'foobar', :first_name => 'nn', :last_name => 'yy')

Попробуйте это.

4 голосов
/ 25 марта 2011

Скорее всего, метод "create" завершается неудачно из-за проверки модели и поэтому возвращает false.Вы бы посеяли ошибки, если бы использовали «создать!»вместо этого метод ( с восклицательным знаком ) - этот метод вызывает исключение при сбое проверки.

Вероятная причина сбоя проверки в вашем случае заключается в том, что ( по умолчанию для Devise ) минимальная длина пароля составляет 6 символов, и вы вообще не вводили пароль.

0 голосов
/ 24 апреля 2015

Если вам не нужны дубликаты во время выполнения rake db: seed несколько раз:

User.create(
  email: email,
  password: password,
  password_confirmation: password
) unless User.where(email: email).exists?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...