【发布时间】:2011-06-03 17:01:00
【问题描述】:
我想手动创建新的Users,而不是强制他们验证他们的电子邮件地址。
这个想法是让现有用户无需注册即可自动添加他们的朋友。这对我正在解决的业务案例很有意义。
Devise 如何做到这一点?
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3 devise registration
我想手动创建新的Users,而不是强制他们验证他们的电子邮件地址。
这个想法是让现有用户无需注册即可自动添加他们的朋友。这对我正在解决的业务案例很有意义。
Devise 如何做到这一点?
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3 devise registration
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 设置为任何日期来手动激活用户。
这是一个 hack,但它应该可以工作。
供参考:confirmable.rb
【讨论】:
我只想添加以供将来参考,自 Devise 2.2 以来,现在还有一个可用的 skip_confirmation_notification! 方法,它基本上可以完成 Matheus 帖子中的所有操作,而无需重新定义模型中的方法。
【讨论】: