从Ruby控制台创建devise用户


146

关于如何从ruby控制台使用devise创建和保存新User对象的任何想法吗?

当我尝试保存它时,我总是错误的。我想我缺少了一些东西,但是我找不到任何相关信息。


1
不回答你的问题,你可能已经知道Railcasts,但学习时关于设计,我发现这些视频的有用:railscasts.com/episodes/209-introducing-deviserailscasts.com/episodes/210-customizing-devise。他们那里也有一些关于Devise的真正有用的视频。祝好运。

2
是的,我都看了他们两个,但他们对我的要求一无所知。
马丁2010年

Answers:


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),现在应该将save(:validate => false)
Martin 2010年

9
这里发生了很多魔术。用户模型扩展了Active Record。为什么要覆盖create方法。密码在哪里加密?
codeAnand 2011年

2
设计调用实际上是做什么的
codeAnand

似乎是错误的做法。这种强制验证(或跳过验证)的方式将不会设置cryptocurrency_password,因此使该记录在实际应用中无用。
VPaul

79

您应该可以使用

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

如果返回假,则可以调用

u.errors

看看出了什么问题。


17
如果您使用:confirmable,请不要忘记也将:confirmed_at属性设置为Time.now,以便立即登录。
David Sulc 2010年

9
作为一种快捷方式,如果您使用Confirmable,请致电u.confirm!
captainpete

30

在模型上具有:confirmable选项时,这意味着应首先确认对象用户。您可以通过两种方式保存用户。

一个。首先是跳过确认:

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

b。或使用确认!:

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,

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.