Masahiro Okubo

devise token authでconfirmable入れてないけどメール認証を求められる問題の解消

devise token authでconfirmable入れてないけどメール認証を求められる問題の解消
# 認証求められる
class User < ApplicationRecord
  extend Devise::Models
  include DeviseTokenAuth::Concerns::User
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable
end

# 認証なしでいける
class User < ApplicationRecord
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable
  extend Devise::Models
  include DeviseTokenAuth::Concerns::User
end

includeしてるDeviseTokenAuth::Concerns::User の中身にdevise が記述されているか?の項目があったので、includeより上にdeviseの項目を設定しないと反映されないっぽい。

生成時ではincludedevise よりも下にあるので、まあ納得っちゃ納得だけど、上に持ってこないと、違和感がすごい。

とりあえずこれで動きます


module DeviseTokenAuth::Concerns::User
  extend ActiveSupport::Concern

  included do
    # Hack to check if devise is already enabled
    if method_defined?(:devise_modules)
      devise_modules.delete(:omniauthable)
    else
      devise :database_authenticatable, :registerable,
             :recoverable, :validatable, :confirmable
    end
  end
end

参考記事

なし。ソース見てみたら書いてあった。


関連記事

copyright© 2016-2021 Masahiro Okubo