Створіть призначеного користувача з консолі Ruby


146

Будь-яка ідея про те, як створити та зберегти новий користувальницький об’єкт, розроблений з консолі ruby?

Коли я намагався зберегти це, я завжди став помилковим. Я думаю, мені щось не вистачає, але я не можу знайти жодної пов'язаної інформації.


1
Не відповідь на ваше запитання, і ви, напевно, вже знаєте про Railcasts, але я вважаю це відео корисним, коли дізнаєтесь про Devise: railscasts.com/episodes/209-introducing-devise , railscasts.com/episodes/210-customizing-devise . У них є ще кілька справді корисних відео про Devise. Удачі.

2
Так, я спостерігав за ними обома, але вони нічого не говорять про те, що я прошу.
Мартін

Відповіді:


197

Ви можете додати помилковий метод збереження, щоб пропустити перевірки, якщо хочете.

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
Схоже, що збережено (false) знімається, тепер його слід зберегти (: validate => false)
Мартін

9
тут відбувається дуже багато магії. Модель користувача розширює Active Record. як надмірно скасовано метод створення. Де пароль шифрується?
codeAnand

2
Що насправді робить заклик
пристрою

Здається, що це неправильний спосіб поведінки. Цей спосіб примусової перевірки (або пропуск перевірки) не встановить encrypted_password, отже, зробить цю запис непотрібним у реальній програмі.
VPaul

79

Ви повинні зробити це за допомогою

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

якщо це повернеться помилково, ви можете зателефонувати

u.errors

щоб побачити, що пішло не так.


17
Якщо ви використовуєте: підтверджується, не забудьте також встановити: атрибут підтверджений на Time.now, щоб ви могли увійти відразу.
Девід Сулк

9
Як ярлик, якщо ви користуєтесь Confirmable, зателефонуйтеu.confirm!
cappepete

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.