2012-06-12 18 views
5

ActiveRecord modelindeki bir alandaki sayısal değeri doğrularken alt seçeneklerin hata mesajlarını nasıl özelleştirebilirim?Sayısallık alt seçenekleri için hata iletilerini nasıl özelleştiririm?

Örnek: Bu durumda

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

'ayın' özelliği 12'den fazla ise, ben "12 eşit veya daha az olmalıdır" varsayılan yerine özel hata mesajı vermek istiyoruz. Bunu nasıl başarabilirim?

cevap

8

Özel bir doğrulayıcı kullanmak istemiyorsanız, bunun yerine en.yml dosyasını kullanabilirsiniz. "Gönderi" varsayımı model adınızdı. Bu, yaşa özel mesajlar, post-spesifik mesajlar ve genel (tüm modeller) mesajlar için örnekler sağlar.

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

Ancak bu, 'less_than_or_equal_to' hakkı birden çok örneğinde özelleştiremediğim anlamına mı geliyor? – Vignesh

+0

Birden çok olayı göstermek üzere güncelleştirildi –

+0

Sadece nedir_integer? Ancak bu anahtar işe yaramıyor gibi görünüyor: büyük harf aynı yerde yuvalandığında çalışıyor. EDIT (yani CEVAP): [kaynak kodu] 'nda bulundu (https://github.com/rails/rails/blob/3-2-stable/activemodel/lib/active_model/validations/numericality.rb#L34): '' Not_an_integer' –

0

Eğer modele bağlı hata mesajlaşma özelleştirmek isterseniz bu sözdizimini kullanabilirsiniz:

validates_numericality_of :month, 
    greater_than_or_equal_to: 1, 
    less_than_or_equal_to: 12, 
    message: "My custom error message" 
Ayrıca, belirli koşullara göre hata iletilerini özelleştirmek için bu sözdizimini kullanabilirsiniz

:

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 
İlgili konular