0

SO ...Rails Динамические модели Validations через ActiveSupport :: Концерн или заказ Validation

В настоящее время я работаю над рельсами проектом, что приведет к нескольким моделей создаются с атрибутами аналогичным сбора. То, что я хотел бы сделать, - создать механизм повторного использования валидации. Например, моя модель может быть ..

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

Смежные вопросы