【问题标题】:Create a devise user from Ruby console从 Ruby 控制台创建一个设计用户
【发布时间】:2011-05-18 01:06:42
【问题描述】:

知道如何使用 ruby​​ 控制台的设计创建和保存新的用户对象吗?

当我试图保存它时,我总是出错。我想我遗漏了一些东西,但我找不到任何相关信息。

【问题讨论】:

标签: ruby-on-rails ruby devise


【解决方案1】:

如果需要,您可以在 save 方法中添加 false 以跳过验证。

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

【讨论】:

  • 看起来 save(false) 已被废弃,现在应该是 save(:validate => false)
  • 这里发生了很多神奇的事情。用户模型扩展了 Active Record。 create 方法是如何被覆盖的。被加密的密码在哪里?
  • 设计调用实际上做了什么
  • 似乎是一种错误的做法。这种强制验证(或跳过验证)的方式不会设置 encrypted_pa​​ssword,从而使该记录在实际应用中无用。
【解决方案2】:

你应该可以使用

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

如果返回false,你可以调用

u.errors

看看出了什么问题。

【讨论】:

  • 如果你使用 :confirmable,别忘了将 :confirmed_at 属性也设置为 Time.now,这样你就可以马上登录了。
  • 作为快捷方式,如果您使用的是Confirmable,请致电u.confirm!
【解决方案3】:

当你的模型上有 :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

【讨论】:

    【解决方案4】:

    如果您想避免发送确认邮件,最好的选择是:

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

    因此,如果您使用的是假电子邮件或没有互联网连接,那将避免错误。

    【讨论】:

    • 更新:confirm! 现在只是 confirm
    【解决方案5】:

    以上答案都不适合我。

    这就是我所做的:

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

    请记住,密码必须大于 6 个字符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-21
      • 2016-09-17
      • 1970-01-01
      • 2015-05-10
      • 2010-11-18
      • 2015-04-23
      • 2020-06-08
      相关资源
      最近更新 更多