Создать пользователя devise из консоли Ruby

137

Любая идея о том, как создать и сохранить новый объект User с помощью консоли ruby?

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

  • 1
    Не ответ на ваш вопрос, и вы, вероятно, уже знаете о Railcasts, но я нашел эти видео полезными, когда узнал о Devise: railscasts.com/episodes/209-introduction-devise , railscasts.com/episodes/210-customizing-devise . Там есть еще несколько действительно полезных видео о Devise. Удачи.
  • 2
    Да, я смотрел их обоих, но они ничего не говорят о том, что я спрашиваю.
Теги:
devise

5 ответов

174
Лучший ответ

Вы можете добавить false к методу сохранения, чтобы пропустить проверки, если хотите.

User.new({:email => "[email protected]", :roles => ["admin"], :password => "111111", :password_confirmation => "111111" }).save(false)

В противном случае я бы сделал это

User.create!({:email => "[email protected]", :roles => ["admin"], :password => "111111", :password_confirmation => "111111" })

Если у вас установлен модуль confirmable для разработки, убедитесь, что вы устанавливаете значение confirmed_at во время создания Time.now.

  • 46
    Похоже, что save (false) устарел, теперь следует сохранить (: validate => false)
  • 9
    здесь происходит так много магии .. Модель User расширяет Active Record. почему метод создания переопределен. Где зашифрованный пароль?
Показать ещё 2 комментария
74

Вы должны сделать это, используя

u = User.new(:email => "[email protected]", :password => 'password', :password_confirmation => 'password')
u.save

если это возвращает false, вы можете вызвать

u.errors

чтобы понять, что пошло не так.

  • 16
    Если вы используете: Подтверждаемый, не забудьте также установить для атрибута: Verified_at значение Time.now, чтобы вы могли сразу войти в систему.
  • 9
    В качестве ярлыка, если вы используете Confirmable , позвоните u.confirm!
25

Если у вашей модели есть: подтверждаемый вариант, это означает, что пользователь должен сначала подтвердить. Вы можете сделать два способа сохранить пользователя.

а. сначала пропустить подтверждение:

newuser = User.new({email: '[email protected]', password: 'password', password_confirmation: 'password'})
newuser.skip_confirmation!
newuser.save

б. или использовать подтверждение!

newuser = User.new({email: '[email protected]', password: 'password', password_confirmation: 'password'})
newuser.confirm!
newuser.save
6

Если вы хотите избежать отправки электронных писем с подтверждением, лучший выбор:

    u = User.new({
      email: '[email protected]',
      password: '12feijaocomarroz',
      password_confirmation: '12feijaocomarroz'
    })

    u.confirm
    u.save

Так что, если вы используете фальшивую электронную почту или у вас нет подключения к интернету, это позволит избежать ошибок.

  • 0
    Обновление: confirm! сейчас просто confirm
1

Ни один из вышеперечисленных ответов не работал у меня.

Это то, что я сделал:

User.create(email: "[email protected]", password: "asdasd", password_confirmation: "asdasd")

Имейте в виду, что пароль должен быть больше 6 символов.

  • 0
    Это работает и для меня, спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню