날짜 형식을 확인하는 Google 모델 중 하나에 대한 맞춤 검증을 구축 중입니다. 따라서 날짜는 dd/mm/yyyy
이어야하며 현재 dd/mm/yyyy 및 dd-mm-yyyy와 함께 작동합니다. 그러나 우리는 어떤 사람들이 ddmmyyyy에 들어가고 나서 레일이 그걸 먹어 다른 것을 뱉어 낸다고합니다. 레일 맞춤 설정 유효성 검사 - 모델 레이어
transaction_date
내가 다음이
def date_is_correct_format
validates_with DateFormatValidator
end
와 같은 개인 모델을 만들 유효성을 검사 할 모델 내에서
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
그런 다음 사용자 지정 유효성 검사를했다 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을 읽었지만 아무것도 볼 수 없다.
나는 레일 3.2.12를 달리고있다. 나는 그것이 잘될 거라 생각했다. 나는 sidekiq 직원과 함께 유니콘 서버에서 실행 중입니다. 하지만 시도 할 때마다 다시 시작합니다. – TheLegend
'validates_with :: DateFormatValidator'에는':: '이 필요합니다. – TheLegend
'::'은 필요하지 않습니다. – zuozuo