Rails 3与deviseauthentication – 如何手动创build一个用户?

我想手动创build新的User ,而不强迫他们validation他们的电子邮件地址。

这个想法是允许现有的用户自动添加他们的朋友,而不需要他们的注册。 这是我正在努力解决的商业案例。

Devise如何做到这一点?

skip_confirmation! 方法可用于任何可confirmable模型。

 @user = User.new params[:user] @user.skip_confirmation! # Sets confirmed_at to Time.now, activating the account @user.save 

用户帐户将被激活。 如果你不想要的话,继续阅读。

devise使用条件callback来生成确认令牌并发送电子邮件。 callback只有在confirmation_required?才会被调用confirmation_required? 返回true 。 重新定义你的模型:

 def confirmation_required? false end 

但是,这将使active_for_authentication? 方法总是返回true,因为需要考虑是否需要确认。 我们也必须重新定义:

 def active_for_authentication? confirmed? || confirmation_period_valid? end 

这样,帐户将保持不活动状态,并且不会发送确认电子邮件。 你将不得不手动激活用户通过调用confirm! 在logging上或只是将confirmed_at设置为任何date。

这是相当黑客,但它应该工作。

供参考: confirmable.rb

我只是想添加以后的参考,因为Devise 2.2现在有一个skip_confirmation_notification! 方法也可以使用,它基本上做了一切,从马修斯的职位,而不重新定义在模型中的方法。