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


146

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

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


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

2
Да, я смотрел их обоих, но они ничего не говорят о том, что я спрашиваю.
Мартин

Ответы:


197

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

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

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

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

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


51
Похоже, что save (false) устарела, теперь следует сохранить (: validate => false)
Martin

9
здесь происходит так много магии .. Модель User расширяет Active Record. почему метод создания переопределен. Где зашифрованный пароль?
codeAnand

2
Что на самом деле делает
призыв devise

Похоже, неправильный способ сделать. Этот способ принудительной проверки (или пропуска проверки) не установит значение encrypted_password, что делает эту запись бесполезной в реальном приложении.
VPaul

79

Вы должны быть в состоянии сделать это с помощью

u = User.new(:email => "user@name.com", :password => 'password', :password_confirmation => 'password')
u.save

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

u.errors

чтобы увидеть, что пошло не так.


17
Если вы используете: Подтверждаемый, не забудьте также установить для атрибута: Verified_at значение Time.now, чтобы вы могли сразу войти в систему.
Дэвид Сульк

9
В качестве ярлыка, если вы используете Confirmable, позвонитеu.confirm!
captainpete

30

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

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

newuser = User.new({email: 'superadmin1@testing.com', password: 'password', password_confirmation: 'password'})
newuser.skip_confirmation!
newuser.save

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

newuser = User.new({email: 'superadmin2@testing.com', password: 'password', password_confirmation: 'password'})
newuser.confirm!
newuser.save

6

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

    u = User.new({
      email: 'demo@greenant.com.br',
      password: '12feijaocomarroz',
      password_confirmation: '12feijaocomarroz'
    })

    u.confirm
    u.save

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


Обновление: confirm!теперь простоconfirm
Shadow Radiance

2

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

Вот что я сделал:

User.create(email: "a@a.com", password: "asdasd", password_confirmation: "asdasd")

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.