2017-06-16 55 views
-2

我按照這篇文章來實現用戶註冊或者用電子郵件或用戶名。 https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-sign-in-using-their-username-or-email-address設計使用電子郵件或手機註冊用戶沒有

User.rb 


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

def login=(login) 
    @login = login 
end 

def login 
@login || self.contact_no || self.email 
end 

def self.find_for_database_authentication(warden_conditions) 
conditions = warden_conditions.dup 
if login = conditions.delete(:login) 
    where(conditions.to_hash).where(["lower(contact_no) = :value OR lower(email) = :value", { :value => login.downcase }]).first 
elsif conditions.has_key?(:contact_no) || conditions.has_key?(:email) 
    where(conditions.to_hash).first 
end 
end 

Devise.rb 

config.authentication_keys = [ :login ] 

但仍然得到錯誤的電子郵件不能爲空「。我怎樣才能解決這個問題?我哪裏錯了?

+0

@Reopen Vote Reviewers - 目標重複已被刪除。如果它自己站立,請考慮重新開放此問題,否則請刪除它。 – robinCTS

回答

0

您正在關注登錄文章以解決註冊問題。簡單的你需要找到驗證來自哪裏。這裏是file

現在要解決您的問題,您需要覆蓋您正在使用設計的模型中的email_required?方法。僅當contact_no空白或您想要的任何條件時才檢查所需的電子郵件。

class User < ApplicationRecord 

    def email_required? 
    self.contact_no.blank? #If contact number blank then email required. 
    end 

end 
+0

謝謝。有效。 –

相關問題