我想手动创建新的User
,而不强迫他们验证自己的电子邮件地址。
这个想法是允许现有用户自动添加他们的朋友,而无需他们的注册。对我正在努力解决的商业案例有意义。
如何用Devise实现这一目标?
答案 0 :(得分:50)
skip_confirmation!
方法适用于任何confirmable
模型。
@user = User.new params[:user]
@user.skip_confirmation! # Sets confirmed_at to Time.now, activating the account
@user.save
但是会激活用户帐户。如果您不想这样,请继续阅读。
Devise使用条件回调生成确认令牌并发送电子邮件。仅当confirmation_required?
返回true
时才会调用回调。在您的模型上重新定义它:
def confirmation_required?
false
end
但是,这将使active_for_authentication?
方法始终返回true,因为它需要考虑是否需要确认。我们也必须重新定义它:
def active_for_authentication?
confirmed? || confirmation_period_valid?
end
这样,该帐户将保持不活动状态,并且不会发送确认电子邮件。您必须通过拨打记录中的confirm!
或仅将confirmed_at
设置为任意日期来手动激活用户。
这是一个非常黑客,但它应该工作。
供参考:confirmable.rb
答案 1 :(得分:9)
我只想添加以供将来参考,因为自Devise 2.2现在有一个skip_confirmation_notification!
方法,它基本上可以完成Matheus发布的所有内容而无需重新定义模型中的方法。