2010-09-27 12 views
16

Gdzie są domyślne komunikaty o błędach sprawdzania poprawności w Rails 3.0? Jaki jest odpowiednik ActiveRecord :: Error.default_error_messages [: taken], na przykład? Doszedłem do wniosku, że ActiveModel obsługuje błędy, a nie ActiveRecord, ale nie mogę znaleźć błędów samodzielnie.Gdzie są domyślne komunikaty o błędach sprawdzania poprawności w Railsach 3.0?

+0

Choć może nie w pełni odpowiedzieć na to pytanie dostarcza ci sposób, aby dostosować komunikaty o błędach walidacji (przy założeniu, że to, co próbujesz zrobić): http://stackoverflow.com/questions/808547/ w pełni niestandardowe sprawdzanie poprawności komunikat o błędzie z szynami – rogeriopvl

+0

W rzeczywistości nie próbuję ich dostosowywać, ale tylko używać ich w testowaniu, upewniając się, że poprawiono komunikaty o błędach. Jednak podany link jest użyteczny - wydaje się, że tworzenie niestandardowych wiadomości jest bardziej skomplikowane i mniej intuicyjne niż w poprzednich wersjach! –

Odpowiedz

22

http://github.com/rails/rails/blob/master/activemodel/lib/active_model/locale/en.yml

i

http://github.com/rails/rails/blob/master/activerecord/lib/active_record/locale/en.yml

: D

UPDATE:

Może powinieneś spróbować dodać własne wiadomości zwyczaj błąd?

# de.yml 
activerecord: 
    errors: 
    messages: 
     taken: "ist bereits vergeben" 

# test_spec.rb 
... 
assert_equal(object.errors[field], I18n.t("activerecord.errors.messages.taken")) 
... 
+0

Dziękuję, to kolejna przydatna informacja. Ale jak uzyskać dostęp do informacji w programie Rails? Musi istnieć metoda w ActiveModel :: Errors lub gdzieś indziej, nie ma? –

+0

Co chcesz zrobić dokładnie? – Lichtamberg

+0

Na przykład assert_equal (object.errors [pole], ActiveRecord :: Error.default_error_messages [: taken]), aby sprawdzić, czy podano prawidłowy komunikat o błędzie. Dla mnie to nie jest pragmatyczne, mogę po prostu użyć dosłownego tekstu, ale nie wydaje mi się to "czystym" sposobem robienia rzeczy. –

Powiązane problemy