0

私のフィールドが特定のクラスのものであることを検証したいと思います。

具体例。私は毎日ユニークでなければならないモデルを持っています。だから、私は検証を挿入します

validates :my_date_field, uniqueness: {scope: [:scope_one, :scope_two]}

日付でレコードを作成すると、検証は正常に機能します。ただし、時間でレコードを作成すると (私のテストでは Time::now を使用します)、日付に解析されますが、検証はトリガーされません。

どうすれば直せますか?

前もって感謝します。

--編集-- 関連する問題:

MyModel::create my_date_field: 4 を禁止する方法

? これは、active_record から validate_presence を渡し、移行から null: false を渡し、date_field に醜い 4 を保存しています。

私はここで完全に迷っています =\

4

1 に答える 1

1

ActiveRecord は、基になるデータベース フィールドに適していると判断した型に値を型変換します。ただし、 を介して元の型にアクセスすることはできますmy_date_field_before_type_cast*_before_type_castアクセサはすべての属性に存在します。そこで、クラスを確認したり、必要なその他の変換を行ったりできます。これらは、カスタム検証メソッドでも利用できます。

于 2013-03-05T18:31:58.150 に答える