0

두 날짜 (시작 날짜와 종료 날짜)를 비교하기 위해 사용자 정의 유효성 검사기를 추가해야합니다. 나는 사용자 정의 유효성 검사기client_side_validations의 사용자 정의 유효성 검사기

class MilestoneDatesValidator < ActiveModel::EachValidator 
    def validate_each(record, attribute, value) 
    if record.start_date > record.end_date 
     record.errors.add(attribute, :end_date_less, options.merge(:value => value)) 
    end 
    end 
end 

을 만들어 그리고 ClientSideValidations에게 사용자 정의 유효성 검사기를 만들었습니다. 나는 다른이의 값을 속성을 얻을 수있는 방법 확실하지 않았다,하지만 난 그런 방법으로이 작업을 수행하려고 :

ClientSideValidations.validators.local['milestone_dates'] = function(element, options) { 
    start_date = new Date($('#milestone_start_date').val()); 
    end_date = new Date($('#milestone_end_date').val()); 
    if(end_date < start_date) { 
    return options.message; 
    } 
} 

그러나 그것은 단지 페이지를 다시로드 한 후 나는 오류가/작동은 불가능하지 않습니다 클라이언트 측 검증. client_side_validations (3.2.0.beta3), client_side_validations-formtastic (2.0.0.beta3), 레일 (3.2.3)

답변

1

위에서 사용한 코드에 선언에 대한 언급이 누락되었습니다 (유효성 검사기 도우미 메서드 사용). milestone_dates_validator.rb 이니셜 라이저 시도에서 파일의 끝에 다음을 추가 :

validates_milestone_dates :milestone_ends_at 
:
module ActiveModel::Validations::HelperMethods 
    def validates_milestone_dates(*attr_names) 
    validates_with MilestoneDatesValidator, _merge_attributes(attr_names) 
    end 
end 

그리고 모델의

이 속성에 발리를 호출/당신이 유효성을 검사이야