【问题标题】:Disable Devise confirmable mails禁用设计可确认邮件
【发布时间】:2012-11-23 14:58:30
【问题描述】:

最近我将confirmable 模块添加到我的用户类中。我的应用程序中已经有一个相当不错的邮件系统(Sidekiq、Sendgrid...),所以我创建了自己的“确认帐户”邮件。现在的问题是禁用 Devise 发送其默认电子邮件。有什么方法可以完全禁用 Devise 邮件系统?

添加:

  • 我想维护confirmable 模块,因为我正在使用它的属性和路由。
  • 我不能使用skip_confirmation!,因为我希望用户确认他们的帐户。
  • 我只想禁用Devise 邮件。

【问题讨论】:

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


    【解决方案1】:

    使用来源,卢克:

    # lib/devise/models/confirmable.rb
    
    # A callback method used to deliver confirmation
    # instructions on creation. This can be overriden
    # in models to map to a nice sign up e-mail.
    def send_on_create_confirmation_instructions
      send_devise_notification(:confirmation_instructions)
    end
    

    所以在你的模型中重写这个方法什么都不做。

    【讨论】:

    • 很高兴它有帮助。如果您使用 bundler,您可以随时使用bundle open <gem> 轻松查看任何 gem 的源代码。
    【解决方案2】:

    尝试在您的模型中覆盖以下设计方法:

    def confirmation_required?
      !confirmed?
    end
    

    或使用skip_confirmation!:

    user = User.new(params) 
    user.skip_confirmation! 
    user.save! 
    

    【讨论】:

    • 这在导入种子数据时很有帮助。
    【解决方案3】:

    使用skip_confirmation!保存任何对象之前的方法。

    def create
      @user = User.new(params[:user])
      @user.skip_confirmation!
      @user.save!
    end
    

    【讨论】:

    • 我不想跳过确认。我只是希望设计不要发送它的电子邮件,因为我正在发送我自己的。
    • @CristianPlanasGonzález skip_confirmation!只会跳过设计确认方法而不是您自己的确认方法。请试试这个,它会起作用的。
    • skip_confirmation!将confirmed_at属性设置为Time.now,基本上是确认用户。我正在使用除邮件之外的所有设计可确认模块。
    • 你应该使用skip_confirmation_notification!
    【解决方案4】:

    我认为只是删除

    :confirmable
    

    用户模型应该这样做

    或者您是否尝试过禁用

    config/environments/development.rb
    
    config.action_mailer.default_url_options = { :host => 'localhost:3000' }
    

    【讨论】:

    • 我需要可确认模块,因为我正在确认用户。我使用设计提供给我的确认路线,以及 User 类的可确认属性。我只是不想让 Devise 发送邮件,因为我想发送自己的邮件。
    • 啊,我明白了,你不能只修改设计邮件以查看你想要的样子吗,似乎努力不使用内置功能?
    【解决方案5】:

    我推荐你

    User.skip_reconfirmation!

    即跳过确认邮件并更新电子邮件不要使用“确认!”

    【讨论】:

      【解决方案6】:

      从设计模型中移除 (:confirmable) 例如:-这里我的设计模型是用户 这里我是这样用的。

      class User < ActiveRecord::Base  
           devise :database_authenticatable, :registerable,
               :recoverable, :rememberable, :trackable, :validatable,:omniauthable
      
      end
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-01-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多