【发布时间】:2013-09-05 09:49:20
【问题描述】:
我正在为我们的一个模型构建一个自定义验证,用于验证日期格式。所以日期应该是dd/mm/yyyy 目前它适用于 dd/mm/yyyy 和 dd-mm-yyyy。但是我们发现有些人正在输入 ddmmyyyy,然后 rails 吃掉了它并吐出了其他东西。
所以我做了一个自定义验证
class DateFormatValidator < ActiveModel::Validator
def validate(record)
record.errors[:transaction_date] << "Date must be in the following format: mm/dd/yyyy" unless /\d{2}\/\d{2}\/\d{4}/.match(record.transaction_date)
end
end
然后在我想要验证 transaction_date 的模型中创建一个像这样的私有模型
def date_is_correct_format
validates_with DateFormatValidator
end
然后拨打validate :date_is_correct_format
我以前也这样做过,但这次似乎不起作用,并且根本没有引发任何异常。我什至可以在私有方法中这样做。
def date_is_correct_format
this_is_a_fake_method_that_should_blow_up
validates_with DateFormatValidator
end
它运行验证并通过一切正常。关于我缺少什么的任何想法?我一直在阅读Ruby on Rails API,但我什么都看不到?
【问题讨论】:
标签: ruby-on-rails validation model