我想验证我的字段是来自特定的类。
具体例子。我的模型必须是唯一的天。所以,我插入验证
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。
我完全迷失在这里= \
答案 0 :(得分:1)
ActiveRecord会将您的值类型转换为它认为适合底层数据库字段的任何类型。不过,您仍然可以通过my_date_field_before_type_cast
访问原始类型。每个属性都存在*_before_type_cast
个访问者。在那里,您可以查看课程或进行您可能需要的任何其他转换。这些也可以在自定义验证方法中使用。