0

日付属性を持つモデルがあります。[attribute]_before_type_cast を使用してカスタム検証を作成し、「31.02.2013」のような日付で検証が失敗するようにしました。

問題はそれです:

@invoice.order_date = '31.02.2013'
@invoice.order_date #=> Sun Mar 03 00:00:00 +0100 2013

そのため、ビュー レイヤーではユーザーは無効な日付に関するメッセージを受け取りますが、無効な属性は自動的に 03.03.2013 に変更されます。これは実際には適切な日付であるため、意味がありません。

その type_cast を停止し、その属性を無効な日付で表示する方法はありますか?

4

1 に答える 1

1

属性の変更を防ぐために、カスタム セッター メソッドを作成できると思います。

def order_date=(date)
  date = your_validate_and_format_method(date)
  self.send(:write_attribute, :order_date, date)
end

では、your_validate_and_format_method検証、フォーマットなどを行うことができ、古い値を保持するか、新しい値を使用するかを決定できます。

于 2013-05-14T19:06:49.053 に答える