【问题标题】:Rails - devise with devise_token_auth not sending confirmation emailRails - 使用 devise_token_auth 设计不发送确认电子邮件
【发布时间】:2016-07-20 22:05:30
【问题描述】:

我从事的项目(ruby '2.2.0',rails '4.2.3')同时使用标准设计用户管理(用于网页)和 devise_token_auth(用于服务的 API 部分)。一切正常,除非我

include DeviseTokenAuth::Concerns::User

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

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

我的模型/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

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

【问题讨论】:

    标签: ruby-on-rails devise access-token rails-api devise-confirmable


    【解决方案1】:

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

    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
    

    【讨论】:

    • 很遗憾,此代码在通过 API 注册时会发送两次确认电子邮件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-08
    • 1970-01-01
    • 2016-08-28
    • 2013-12-09
    • 1970-01-01
    • 2015-06-13
    相关资源
    最近更新 更多