簡體   English   中英

刪除設計電子郵件驗證

[英]Remove devise email validation

我使用devise和devise-token-auth。 我有以下內容的用戶模型

class User < ApplicationRecord

  devise :database_authenticatable, :registerable,
          :recoverable, :rememberable, :trackable, :validatable, :authentication_keys => [:login]
  include DeviseTokenAuth::Concerns::User

  validates_uniqueness_of :login
  validates_presence_of :full_name

  protected
  def email_required?
    puts "email_required called"
    false
  end
end

但是設計電子郵件驗證仍然有效

2.3.0 :003 > user = User.new(login: "hello", password: "11111111", password_confirmation: "11111111", full_name: "hello world")
 => #<User id: nil, provider: "email", uid: "", email: nil, full_name: "hello world", login: "hello", created_at: nil, updated_at: nil> 
2.3.0 :004 > user.valid?
email_required? called   #<===== my method is called!
   (3.7ms)  SELECT COUNT(*) FROM "users" WHERE "users"."provider" = $1 AND "users"."email" IS NULL  [["provider", "email"]]
  User Exists (1.0ms)  SELECT  1 AS one FROM "users" WHERE "users"."login" = $1 LIMIT $2  [["login", "hello"], ["LIMIT", 1]]
 => false 
2.3.0 :005 > user.errors
 => #<ActiveModel::Errors:0x000000028e2338 @messages={:email=>[...]}, @details={:email=>[{:error=>:blank}]}>

為什么這個? 謝謝

您的驗證不會覆蓋Devise驗證,而只是擴展它們。 如果您確實要刪除Devise驗證,則可以刪除:validatable模塊。 但是您也將丟失所有漂亮的驗證(例如,在密碼上)。

或者,也許首先嘗試執行此操作:(我沒有對此進行測試) :authentication_keys => {email: false, login: true}

如果您只想刪除電子郵件驗證。 將用戶模型編輯為

   devise :database_authenticatable, :registerable,:recoverable, :rememberable,
   :trackable, :validatable, authentication_keys: [:password]

如果您完全想刪除驗證。 從用戶模型中刪除可驗證的

就我而言,我更改為用戶名字段。 首先,我更改了/config/initializers/devise.rb > config.authentication_keys = [:username]

而且,當我使用舊數據庫時,我也必須將主鍵也更改為用戶名,並更改auth方法。

def self.find_for_database_authentication(warden_conditions)
  conditions = warden_conditions.dup
  login = conditions.delete(:username)
  where(["APP_NAME = '#{$app_name.downcase}' AND USERNAME = :value", { :value => login }]).first
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM