从 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_password,从而使该记录在实际应用中无用。【参考方案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 控制台创建一个设计用户的主要内容,如果未能解决你的问题,请参考以下文章