0

...레일 동적 모델하는 검증 :: 우려 또는 사용자 정의 검증 SO

내가 현재 여러 모델 초래하는 레일 프로젝트를 진행하고하는 유사한 수수료 속성으로 생성된다. 내가하고 싶은 것은 재사용 가능한 검증 메커니즘을 만드는 것이다. 예를 들어, 나의 모델은 ..

Foo 
    currency 
    producer_product_fee 
    producer_transport_fee 
    consumer_product_fee 
    consumer_transport_fee 

수 ... 나는 (항상 모든 수수료에 두 개의 서로 다른 측면을 가진) 유사한 구조의 여러 모델이되고 나는 수수료가 아닌 것을 확인하고 싶습니다 부정적이며 유효한 숫자이며, 생산자 요금은 항상 해당 소비자 요금보다 적습니다. 모델 간의 여러 속성의 이름이 완전히 다를 수는 있지만 제작자/소비자 요금 쌍이 항상 접두사를 제외하고는 동일하게 지정된다고 가정 할 수 있습니다. 이것을 달성하는 방법에 대한 조언은 훌륭합니다.

답변

0

이와 비슷한 기능이 있습니까?

validates_numericality_of :producer_product_fee, 
    less_than: Proc.new { |r| r.consumer_product_fee }, 
    greater_than_or_equal_to: 0, 
    allow_blank: false 
+0

이 방법이 효과가있을 수 있지만 모든 모델에서 구현해야합니다. 이상적으로는 모듈이나 비슷한 것을 만들 수있어서 가져올 수 있고 잠재적으로 매개 변수를 기호 나 일종의 것으로 전달할 수 있으며이 논리를 다시 지정할 필요가 없습니다. 다행스럽게도이 재사용 가능한 구성 요소의 사양을 shared_context 및 shared_examples로 가져와 다른 구성 요소 테스트에서 호출하여 모든 구성 요소의 검증을 단순화 할 수 있기를 바랍니다. – Lane