带有设计验证的Rails 3 - 如何手动创建用户?

AnA*_*ice 34 ruby ruby-on-rails registration devise ruby-on-rails-3

我想手动创建新的Users,而不强迫他们验证他们的电子邮件地址.

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

如何用Devise实现这一目标?

Mat*_*ira 50

skip_confirmation!方法适用于任何confirmable型号.

@user = User.new params[:user]
@user.skip_confirmation! # Sets confirmed_at to Time.now, activating the account
@user.save
Run Code Online (Sandbox Code Playgroud)

但是将激活用户帐户.如果你不想那样,继续阅读.

Devise使用条件回调生成确认令牌并发送电子邮件.只有在confirmation_required?返回时才会调用回调true.在您的模型上重新定义它:

def confirmation_required?
  false
end
Run Code Online (Sandbox Code Playgroud)

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

def active_for_authentication?
  confirmed? || confirmation_period_valid?
end
Run Code Online (Sandbox Code Playgroud)

这样,帐户将保持不活动状态,并且不会发送确认电子邮件.您必须通过调用confirm!记录或仅设置confirmed_at为任何日期来手动激活用户.

这是一个非常黑客,但它应该工作.

供参考:confirmable.rb

  • 如果您只想使用电子邮件地址创建用户,则可以通过u.save取消激活验证(:validate => false) (2认同)
  • 活性?被重命名为active_for_authentication?(来自设计版本1.2.0) (2认同)

UnS*_*per 9

我只是想添加以供将来参考,因为自Devise 2.2现在有一个skip_confirmation_notification!方法可用,它基本上可以完成Matheus的所有内容,而无需重新定义模型中的方法.