0

私のモデルには、これと非常によく似たカスタム検証があります。

マルチフィールド/範囲の検証

提供されるソリューションは機能します。

errors.add(:base, 'Start date must be before stop date') if self.start > self.stop

を使用する:baseと、エラーが 1 つだけ発生します。ここでは、2 つの別個のエラーが同じことを示すことは望ましくないため、問題ありません。ただし、フィールドは強調表示されません。またはを使用しているかのように、:startおよびフィールドも強調表示する必要があります。:stop:start:stoperrors.add

どうやってやるの?

4

1 に答える 1

0

Rails のビルトイン メカニズムを利用する必要があります。これらは、エラーを含むフォーム フィールドをdivwithfield_with_errorクラスでラップすることで構成されます。

これがあなたに合わない場合:

  • カスタマイズします。Railscast を参照してください

  • より手動の解決策として、インスタンスがどのエラーを抱えているかを確認し、それに応じて行動してください@instance.errors.include? :filed_name。このスコープでは、すべてのエラーをに追加しないでくださいbase

于 2012-09-16T16:42:39.683 に答える