2012-02-06 10 views
15

Vorrei NON richiedere l'e-mail per l'accesso utilizzando il dispositivo. Ho rimosso e-mail da config/inizializzatori/devise.rb:escogitare: non richiede l'e-mail

config.authentication_keys = [ :login ] 

e ha aggiunto questo al mio modello di utente:

def email_required? 
    false 
end 

Tuttavia, sto ottenendo questo errore quando provo a salvare l'utente:

SQLite3::SQLException: users.email may not be NULL 

Suppongo di cambiare qualcosa nella migrazione?

risposta

16

Sembra che il campo di posta elettronica sia impostato nel database come "non NULL" o "Allow Null" su false. E si sta ricevendo un errore direttamente dal database. Assumendo che il modello utente viene chiamato utente è necessario aggiungere la migrazione vuoto sanitario per risolvere questo:

change_column :users, :email, :string, :null => true 

Documentazione: http://apidock.com/rails/ActiveRecord/ConnectionAdapters/SchemaStatements/change_column

9

addizionale alla rimozione "necessaria" da: colonna di e-mail è necessario rimuovere " : validabile "dal modello utente.

26

Alcuni riferimenti indicano che non è necessario rimuovere :validatable perché rimuoverà le convalide della password.

Nel mio caso, ho rimosso la colonna email dal mio utenti nel database e ideato l'arresto anomalo. Ho incluso:

def email_required? 
    false 
end 

def email_changed? 
    false 
end 

nel User.rb, e ha funzionato correttamente.

+4

http://rubydoc.info/github/plataformatec/devise/master/Devise/Models/Validatable –

+0

Sì, questo è molto importante –

Problemi correlati