14

这是我的情况,我使用设计来允许用户在我的网站上创建帐户并管理他们的身份验证。在注册过程中,我允许客户更改一些选项,从而创建一个实际上不同的帐户,但仍基于相同的核心用户资源。我想选择不为其中一些帐户类型发送确认电子邮件。我不在乎帐户是否没有得到确认并且用户无法登录,没关系,没有pb。我该怎么做呢?谢谢,亚历克斯

4

5 回答 5

25

实际上,一旦我深入挖掘,这很容易。只需覆盖用户模型中的一种方法(或您正在使用的任何方法):

    # Callback to overwrite if confirmation is required or not.
    def confirmation_required?
      !confirmed?
    end

把你的条件和工作完成!

亚历克斯

于 2011-01-25T08:33:58.193 回答
18

如果您只想跳过发送电子邮件但不进行确认,请使用:

# Skips sending the confirmation/reconfirmation notification email after_create/after_update. Unlike
# #skip_confirmation!, record still requires confirmation.
@user.skip_confirmation_notification!

如果您不想在模型中使用回调调用此方法,请覆盖此方法:

def send_confirmation_notification?
  false
end
于 2015-10-06T20:04:36.130 回答
11

在创建新用户之前,您还可以在控制器中简单地添加以下代码行:

@user.skip_confirmation!
于 2012-12-14T01:10:57.283 回答
9

我不知道在提交其他答案后 Devise 是否添加了这个,但是这个代码就在confirmable.rb

  # If you don't want confirmation to be sent on create, neither a code
  # to be generated, call skip_confirmation!
  def skip_confirmation!
    self.confirmed_at = Time.now
  end
于 2011-08-23T00:32:19.043 回答
6

我能够对这些功能做类似的事情:

注册控制器.rb

def build_resource(*args)
    极好的
    if session[:omniauth] # TODO -- 如果他们有会话但没有登录怎么办?
      @user.apply_omniauth(会话[:omniauth])
      @user.mark_as_confirmed # 如果他们使用外部身份验证,我们不需要确认帐户
      # @user.valid?
    结尾
  结尾

然后在我的用户模型中:

用户.rb

  def mark_as_confirmed
    self.confirmation_token = nil
    self.confirmed_at = Time.now
  结尾
于 2011-04-28T00:34:48.507 回答