Лучшее решение - создать свой собственный валидатор:
class MyModel < ActiveRecord::Base
include ActiveModel::Validations
class DateValidator < ActiveModel::EachValidator
def validate_each(record, attribute, value)
record.errors[attribute] << "must be a valid datetime" unless (DateTime.parse(value) rescue nil)
end
end
validates :datetime_field, :presence => true, :date => true
validates :another_datetime_field, :presence => true, :date => true
validates :third_datetime_field, :presence => true, :date => true
end
UPD
вы можете поделиться такими же проверками следующим образом:
validates :datetime_field, :another_datetime_field, :third_datetime_field, :presence => true, :date => true