2011-02-26 11 views
8

así que acabo de empezar a utilizar los validadores personalizados en los rieles 3, sin embargo, no estoy seguro si puedo usar mis archivos existentes de configuración regional i18n activerecord. parece que tengo que hacerraíles 3 validadores e i18n

record.errors[attribute] << I18n.t('activerecord.errors.models.{model}.attributes.{attribute}.invalid_whatever') if ... 

en lugar de antes, cuando Me podría haber hecho

:message => :invalid_whatever 

hay taquigrafía que puedo usar en mi ActiveModel: Clase/EachValidator Validador de lograr lo mismo?

Respuesta

16

que tenía el mismo problema y finalmente encontré la respuesta ...

record.errors.add(attribute,:invalid_whatever) 
2

Si al final de la lectura de esta pregunta (que por el momento de escribir esto es unos pocos años), puede probar con el después de 4 carriles:

En su modelo:
class Document < ActiveRecord::Base validates :date, date_in_present: {message: :custom_message} end

En su validador:
class DateInPresentValidator < ActiveModel::EachValidator def validate_each(object, attribute, value) if(value.to_date >= Date.today) true else object.errors[attribute] << options[:message] end end end

En el archivo yml i18n:
en: activerecord: errors: models: document: attributes: date: custom_message: Date is not in present

no he probado esto a fondo.

También puede especificar un mensaje de reserva en el validador personalizado:
object.errors[attribute] << (options[:message] || "Display this message if message is not in options")

Cuestiones relacionadas