0

我想验证我的字段是否来自一个特定的类。

具体例子。我有一个每天必须独一无二的模型。所以,我插入一个验证

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

如果我使用日期创建记录,则验证工作正常。但是,如果我使用 Time 创建记录(我的测试使用 Time::now),它会将其解析为 Date,但不会触发验证。

我应该如何解决它?

提前致谢。

--编辑-- 一个相关的问题:

我如何禁止某人做 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 回答