日付の形式を検証するモデルの 1 つのカスタム検証を構築しています。日付が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 を読んでいますが、何も見えませんか?