2017-02-20 2 views
3

Ich möchte keine E-Mail für die Unterschrift nur Handy-Nummer benötigen, um Benutzer zu registrieren und in Devices Juwel anmelden. Ich habe die E-Mail aus der Datei config/initializers/devise.rb entfernt:E-Mail-Feld in Devise Gem entfernen?

+0

Haben Sie überprüft https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-sign-in- using-your-username-or-email-address, können Sie 'mobile number' anstelle von' username' verwenden –

Antwort

3

Dies ist die link in der validate.rb-Datei des Geräts. Sie können eine Methode email_required sehen? im Modell. Also ich denke

def email_required? 
    false 
end 

Sie müssen obige Methode in Ihre model.rb-Datei einfügen.

Sie müssen auch eine kleine Änderung an Ihrer Tabelle Benutzer vornehmen. Standardmäßig lässt Devise das E-Mail-Feld nicht null zu. Erstellen und Ausführen einer Migration ändern, die E-Mail-null sein können

# in console 
rails g migration AddChangeColumnNullToUserEmail 

# migration file 
class AddChangeColumnNullToUserEmail < ActiveRecord::Migration 
    def self.up 
    change_column :users, :email, :string, :null => true 
    end 

    def self.down 
    change_column :users, :email, :string, :null => false 
    end 
end 
3

Sie können this Anleitung verwenden, mit Ausnahme von mobile anstelle von username. z.B.

In devise.rb:

config.authentication_keys = [:mobile] 

In Ihrem Controller:

.permit(:mobile) 

ändern Sie das E-Mail-Feld auf Ihr Mobile Feld in app/views/devise/sessions/new.html.erb und app/views/devise/registrations/new.html.erb

In devise.en.yml:

invalid: 'Invalid mobile number or password.' 
not_found_in_database: 'Invalid mobile number or password.' 
0

U muss sich ändern config.authentication_keys = [ :phone_number ] es hängt davon ab, wie Sie es in Ihrer DB speichern und in der Form zu f.text_field ändern, die es sein sollte.

+0

nein, das ist falsch –

Verwandte Themen