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

时间:2011-01-04 22:43:42

标签: ruby-on-rails ruby ruby-on-rails-3 devise registration

我想手动创建新的User,而不强迫他们验证自己的电子邮件地址。

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

如何用Devise实现这一目标?

2 个答案:

答案 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发布的所有内容而无需重新定义模型中的方法。