【问题标题】:Skip confirmation mail in devise跳过设计中的确认邮件
【发布时间】:2016-07-23 14:03:05
【问题描述】:

我想在我的 rails 4 应用程序中跳过从设备发送确认邮件。我尝试了很多东西,但都没有奏效。

在我的user.rb

before_create :my_method

def my_method
    self.skip_confirmation
end

我也试过了

before_create :my_method

def my_method
    !confirmed
end

我尝试从user.rb 中删除 :confirmable,但它们似乎都不起作用。在此先感谢:)

【问题讨论】:

  • 删除:confirmable后,你尝试重启服务器了吗?
  • 模型更改后是否尝试重新启动 Rails 服务器
  • 这样devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable保存并重新启动服务器。它应该跳过确认的事情。

标签: ruby-on-rails ruby ruby-on-rails-4 devise


【解决方案1】:

注意:如果您只想在某些地方跳过

如果你在skip_confirmation!之前调用User.create,你需要调用User.newuser.save

 @user = User.new(:first_name => "John", :last_name => "Doe")
 @user.skip_confirmation!
 @user.confirm!
 @user.save

空调到你的路

before_create :my_method

def my_method
    self.skip_confirmation!
    self.confirm!
end

devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable 中排除术语confirmable 应整体跳过

【讨论】:

  • 嘿,谢谢@illusionist :) 但是当我使用第二种方法时,我收到了这个错误“弃用警告:确认!不推荐使用确认”
  • 好的,然后改用confirm,看看你正在使用的devise版本的正确方法。
【解决方案2】:

试试这个

@user = User.new(:email => 'email@example.com', :password => 'password') 
@user.skip_confirmation_notification!
@user.save

skip_confirmation_notification! 生成确认令牌但不发送确认电子邮件。

【讨论】:

    【解决方案3】:

    尝试将此添加到user.rb

    protected
    
    def confirmation_required?
     false
    end
    

    【讨论】:

      【解决方案4】:

      对于每个User 实例:

      class User < ApplicationRecord
        after_initialize do |user|
          user.skip_confirmation_notification!
        end
      end
      

      对于某些特定情况:

      john = User.new
      john.skip_confirmation_notification!
      

      附:上面的答案是关于完全禁用确认过程,而作者询问的是仅禁用发送电子邮件。

      【讨论】:

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