验证具有特定类的ActiveRecord字段

时间:2013-03-05 18:27:17

标签: ruby-on-rails validation rails-activerecord

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

具体例子。我的模型必须是唯一的。所以,我插入验证

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

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

我该如何解决?

提前致谢。

- Edit-- 一个相关的问题:

我是如何禁止某人做的     MyModel :: create my_date_field:4

?它从active_record传递validate_presence,从迁移传递null:false,并在我的date_field中保存一个丑陋的4。

我完全迷失在这里= \

1 个答案:

答案 0 :(得分:1)

ActiveRecord会将您的值类型转换为它认为适合底层数据库字段的任何类型。不过,您仍然可以通过my_date_field_before_type_cast访问原始类型。每个属性都存在*_before_type_cast个访问者。在那里,您可以查看课程或进行您可能需要的任何其他转换。这些也可以在自定义验证方法中使用。