레일에서 사용자 지정 유효성 검사를 배우기 위해 두 양식 필드를 비교하기 위해 적용하려고합니다. 지금까지 나는 app/validation/pin_validator.rb
에 저장 한 사용자 정의 사용자 정의 유효성 검사기에 하나의 값을 쉽게 전달할 수 있으며 정상적으로 작동합니다.두 가지 양식 필드를 비교하기 위해 사용자 정의 유효성 검사 도구 사용하기
class PinValidator < ActiveModel::EachValidator
def validate_each (record, attribute, value)
if value1 > value2
record.errors[attribute] << (options[:message] || "validator working")
end
end
end
그리고이 같은 뭔가 모델에서 호출 :
validates :pin_number, :id_string, pin: true
하지만
정말 양식에서 데이터의 두 조각을 받아들이 다음과 같은 것을 설정 같은 거라고
어디 :id_string
및 :pin_number
은 모두 양식 필드하며 value1
으로 비교 될 것이며,이 작업을 수행 할 수있는 방법이 value2
있습니까?
미리 감사드립니다.
참고 : 위의 값 비교는 실제로 약간의 자바 스크립트로 프런트 엔드에서 해결할 수 있습니다. 서버 측 솔루션을 요구하는 이유는 궁극적으로 두 값을 데이터베이스의 항목 집합과 비교하려고하기 때문입니다. 위의 예는 제 질문을 단순한 것으로 단순화하는 것입니다.
안녕하세요, 응답 해 주셔서 감사합니다! 나는 내가 따라하기가 두렵다. (난 레일에 새로운 편이다.) 조금 더 정교 할 수 있니? – neanderslob
물론 지금은 응답을 추가하지만 기본적으로 심볼 배열 인'@ attributes' 인스턴스 변수를 확인할 수 있습니다. 각 심볼은 유효성 검사 선언에 나열된 각 속성의 이름이'validates : attrib1, : attrib2, pin : true' – rafb3
당신은 록 스타입니다. 많은 감사합니다! 필자가 기대하지 못했던 이상한 기발함은'value1'과'value2'를 모두 사용하기 위해서 유효성 검사 호출에': pin_number'와': id_string'을 모두 포함시켜야한다는 것입니다. : pin_number, : id_string, pin : true' – neanderslob