从 Ruby 控制台创建一个设计用户

Posted

技术标签:

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

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

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

【问题讨论】:

不是您问题的答案,您可能已经了解 Railcasts,但我发现这些视频在了解 Devise 时很有用:railscasts.com/episodes/209-introducing-devise、railscasts.com/episodes/210-customizing-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 个字符。

【讨论】:

以上是关于从 Ruby 控制台创建一个设计用户的主要内容,如果未能解决你的问题,请参考以下文章

su—RUBY控制台代码

如何在 Ruby on Rails 中链接个人资料页面

如何使用 Ruby on Rails 将数据从控制器传递到模型?

ruby 设计会话控制器提供token.rb

localhost在rails上重定向了太多次ruby

ruby 从rails控制台登录