0

...Railsの動的モデル検証::懸念やカスタム検証SO

私は現在、同様の料金属性を使用して作成されているいくつかのモデルになりますレールのプロジェクトに取り組んでいます。私がしたいのは、再利用可能な検証メカニズムを作成することです。例えば、私のモデルは...

Foo 
    currency 
    producer_product_fee 
    producer_transport_fee 
    consumer_product_fee 
    consumer_transport_fee 

可能性が...と私は(常にすべての料金には、2つの異なる側面を持つ)類似の構造のいくつかのモデルを持っていますし、私は手数料が非であることを検証したいと思います負の有効な数字であり、プロデューサー料金は常に対応する消費者料金よりも低い。モデルのさまざまな属性は完全に異なる名前にすることができますが、プロデューサ/コンシューマ料金のペアは、接頭辞を除いて常に同じ名前が付けられていると見なすことができます。これを達成するためのヒントは素晴らしいでしょう。

答えて

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