2012-06-12 9 views
5

Come personalizzare i messaggi di errore per le opzioni secondarie durante la convalida della numericità su un campo in un modello ActiveRecord?Come personalizzare i messaggi di errore per convalidare le sotto-opzioni di numericità?

Esempio:

validates :month, :numericality => { 
    :greater_than_or_equal_to => 1, 
    :less_than_or_equal_to => 12 
} 

In questo caso se l'attributo 'mese' è più di 12, voglio fornire messaggio di errore personalizzato invece di quello predefinito "deve essere inferiore o uguale a 12". Come ottenere questo?

risposta

8

Se non si desidera utilizzare un validatore personalizzato, è possibile utilizzare invece il file en.yml. Supponendo che "post" fosse il nome del tuo modello, questo fornisce esempi per messaggi specifici per età, messaggi post-specifici e messaggi generici (tutti i modelli).

en: 
    activerecord: 
    errors: 
     models: 
     post: 
      attributes: 
      age: 
       less_than_or_equal_to: "Age-specific error" # Applies only to post.age 
      less_than_or_equal_to: "Post-specific error" # Applies to all other fields for a post 
     messages: 
     less_than_or_equal_to: "Generic error" # Applies to all other models 
+0

Ma questo significherebbe che non posso personalizzarlo su più occorrenze di 'less_than_or_equal_to' right ?. – Vignesh

+0

Aggiornato per mostrare più occorrenze –

+0

Che dire di only_integer? Quella chiave non sembra funzionare, però: greater_than funziona quando nidifica nello stesso posto. EDIT (cioè RISPOSTA): trovato in [il codice sorgente] (https://github.com/rails/rails/blob/3-2-stable/activemodel/lib/active_model/validations/numericality.rb#L34): È 'not_an_integer' –

0

Se si desidera personalizzare la messaggistica di errore a seconda del modello è possibile utilizzare la seguente sintassi:

validates_numericality_of :month, 
    greater_than_or_equal_to: 1, 
    less_than_or_equal_to: 12, 
    message: "My custom error message" 

È inoltre possibile utilizzare questa sintassi per personalizzare i messaggi di errore in base alle condizioni specifiche:

validates_numericality_of :month, 
    greater_than_or_equal_to: 1, 
    message: "Too small" 

validates_numericality_of :month, 
    less_than_or_equal_to: 12, 
    message: "Too big 
Problemi correlati