Ich habe gerade damit begonnen, die benutzerdefinierten Validatoren in Rails 3 zu verwenden. Ich bin mir jedoch nicht sicher, ob ich meine vorhandenen iloco-Dateien für activerecord verwenden kann. es scheint, dass ich tun muss
%Vor%statt vorher, wenn ich es einfach gemacht hätte
%Vor%Gibt es eine Abkürzung, die ich in meinem ActiveModel verwenden kann: Validator / EachValidator-Klasse, um dasselbe zu erreichen?
Wenn Sie diese Frage (die zu dem Zeitpunkt dieses Schreibens ein paar Jahre alt ist) am Ende lesen, können Sie folgendes für Rails 4 versuchen:
In Ihrem Modell:
class Document < ActiveRecord::Base
validates :date, date_in_present: {message: :custom_message}
end
In Ihrem Prüfer:
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
In Ihrer i18n-XML-Datei:
en:
activerecord:
errors:
models:
document:
attributes:
date:
custom_message: Date is not in present
Ich habe das nicht gründlich getestet.
Sie können im Custom Validator auch eine Fallback-Nachricht angeben:
object.errors[attribute] << (options[:message] || "Display this message if message is not in options")
Tags und Links ruby-on-rails-3 validation internationalization