Rails - 设计devise_token_auth不发送确认电子邮件

Kak*_*arz 2 ruby-on-rails devise access-token devise-confirmable rails-api

我在项目(ruby'2.2.0',rails'4.2.3')上工作,它使用标准设计用户管理(用于网页)和devise_token_auth(用于服务的API部分).除非我,一切正常

include DeviseTokenAuth::Concerns::User
Run Code Online (Sandbox Code Playgroud)

在models/user.rb中.然后在用户注册后不发送确认电子邮件.

我很感激这个问题的解决方案.

我的models/user.rb:

class User < ActiveRecord::Base
  # Include devise modules.
  devise :invitable, :database_authenticatable, :registerable,
          :recoverable, :rememberable, :trackable, :validatable,
          :confirmable, :omniauthable

  include DeviseTokenAuth::Concerns::User

  enum role: [:user, :vip, :admin]
  after_initialize :set_default_role, :if => :new_record?

  def set_default_role
    self.role ||= :user
  end
end
Run Code Online (Sandbox Code Playgroud)

routes.rb中:

Rails.application.routes.draw do
  # standard devise routes available at /users
  # NOTE: make sure this comes first!!!
  devise_for :users

  # token auth routes available at /api/v1/auth
  namespace :api do
    scope :v1 do
      mount_devise_token_auth_for 'User', at: 'auth'
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

Tan*_*Tan 5

我遇到了同样的问题.这种解决方法帮助了我

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

  include DeviseTokenAuth::Concerns::User

  after_create :send_confirmation_email, if: -> { !Rails.env.test? && User.devise_modules.include?(:confirmable) }

  private
  def send_confirmation_email
    self.send_confirmation_instructions
  end
end
Run Code Online (Sandbox Code Playgroud)

  • 不幸的是,此代码在通过API注册时会发送两次确认电子邮件. (3认同)