2013-07-10 10 views
6

Sto usando la gemma di fantasia nella mia applicazione Ruby on Rails. All'accesso dell'utente se esiste già un messaggio di posta elettronica, esiste un messaggio predefinito "L'email è già stata acquisita".Cambia messaggio di devise "L'email è già stata scattata"

Ho cambiato questo messaggio nella en.yml

activerecord: 
    errors: 
     messages: 
     taken: "User with same email already exists. Please try with another email address." 

In considerazione ho usato:

<div class="notice"><%= devise_error_messages! %></div> 

Ora il messaggio che sto ottenendo è

"Email User with same email already exists. Please try with another email address." 

Il problema è che "E-mail" viene aggiunta all'inizio.

C'è un altro modo per modificare questo messaggio predefinito?

+0

Un'altra opzione: https://stackoverflow.com/questions/9006270/where-can-i-change-the-email -ha già-stato-preso-errore-messaggio – user1515295

risposta

7

Cambio formato del messaggio di

en: 
    errors: 
    format: "%{message}" 

default è "%{attribute} %{message}"

UPDATE

C'è un'altra soluzione. So che questo è un problema, ma qui va .. Rimuovere la convalida esistente e aggiungerne uno personalizzato.

validate :email_uniqueness 

def email_uniqueness 
    self.errors.add(:base, 'User with same email already exists. Please try with another email address.') if User.where(:email => self.email).exists? 
end 

Nota: Si dovrebbe prendere in considerazione l'utente esistente, mentre si fa un aggiornamento

+0

Grazie per la risposta. Sta funzionando. Posso cambiare il formato solo per questo messaggio ?? – Arif

+0

AFIK, non puoi. Dovrai interpolare tutti gli altri messaggi per includere il nome dell'attributo. Oppure, invece di modificare il formato predefinito, potresti eseguire qualche regex replace sul messaggio di errore. – Santhosh

+0

Verifica la mia modifica – Santhosh

Problemi correlati