【问题标题】:Devise: Is it possible to NOT send a confirmation email in specific cases ?设计:在特定情况下是否可以不发送确认电子邮件?
【发布时间】:2014-11-18 05:08:51
【问题描述】:

实际上,我正在使用设备进行登录和注册,并且工作正常,它会发送一封确认电子邮件,非常棒。但我需要在特定情况下发送确认电子邮件。我在 URL 中传递用户类型,并代表我想设置邮件。我有两种类型的用户,一种将确认他们的帐户他们的用户自我重置无法确认他们的帐户只有管理员可以批准他们的帐户。我已经覆盖了创建方法

def create
    super
    if params[:type]=='xyz
        @user.skip_confirmation_notification!
    end
end

但它在这两种情况下都会发送邮件。请告诉我哪里错了。

【问题讨论】:

  • 我认为@user.skip_confirmation!会工作的。
  • 它可以工作,但是当我使用它时,它不会发送电子邮件,这很好,但它允许用户登录我不想要的。
  • 我有另一个想法,我可以在设计身份验证方法中设置另一个范围吗?
  • 用户无需确认即可登录?
  • 我的意思是可以添加另一个确认范围?例如设计检查confirm_at列,但我想添加另一个范围,例如 (confirm_at!='' && status=true)

标签: ruby-on-rails devise email-confirmation


【解决方案1】:

因此,根据设计可确认模块,您可以通过以下代码跳过发送确认和电子邮件。

 def confirm_your_type_user_without_confirmation_email
     # check your condition here and process the following
     self.skip_confirmation! 
     self.confirm!
     # condition may end here
 end

现在让我们在创建钩子上调用它。

class User < ActiveRecord::Base
  after_create :confirm_your_type_user_without_confirmation_email
  ....
end

如需更多参考,您可以查看以下内容: Devise Confirmable module

解决方案应该与我上面提到的类似。最好的做法是避免控制器处理这些责任,因为这不是你的控制器应该承担的。 :) 希望我的回答能给你一些解决问题的方法!谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-22
    • 2011-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-10
    相关资源
    最近更新 更多