2013-07-10 3 views
6

Używam devise gem w mojej aplikacji ruby ​​na szynach. W przypadku rejestracji użytkownika, jeśli wiadomość e-mail już istnieje, pojawia się domyślny komunikat "E-mail już został zajęty".Zmień wiadomość opracować "E-mail został już podjęty"

Zmieniłem ten post w en.yml

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

Biorąc Użyłem:

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

Teraz komunikat otrzymuję jest

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

Problemem jest to, że "Email" jest dołączany na starcie.

Czy istnieje inny sposób zmiany tej domyślnej wiadomości?

+0

Inna opcja: https://stackoverflow.com/questions/9006270/where-can-i-change-the-email -to-już-został-wzięty-błąd-wiadomość – user1515295

Odpowiedz

7

Zmiana formatu wiadomości do

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

Domyślnie jest "%{attribute} %{message}"

UPDATE

Nie ma innego rozwiązania. Wiem, że to działa, ale tutaj idzie .. Usuń istniejącą weryfikację i dodaj niestandardową.

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 

Uwaga: Należy rozważyć istniejącego użytkownika, robiąc aktualizację

+0

Dzięki za odpowiedź. To działa. Czy mogę zmienić tylko format tej wiadomości? – Arif

+0

AFIK, nie możesz. Będziesz musiał interpolować wszystkie pozostałe wiadomości, aby dołączyć nazwę atrybutu. Lub, zamiast zmieniać domyślny format, możesz zrobić zamianę wyrażeń regularnych w komunikacie błędów. – Santhosh

+0

Proszę sprawdzić moją edycję – Santhosh