我想我可能是在做梦,但我想我读的地方,你可以验证一个对象的属性的类型,然后再保存它? 像validates :transaction_date, :type => Date
,这将确保它的日期?Rails验证类型日期?
这可能在Rails 3.2中吗?我试图在网上找到这个证据。我已经在这里看过rails api,我正在阅读ActiveRecord support。
我想我可能是在做梦,但我想我读的地方,你可以验证一个对象的属性的类型,然后再保存它? 像validates :transaction_date, :type => Date
,这将确保它的日期?Rails验证类型日期?
这可能在Rails 3.2中吗?我试图在网上找到这个证据。我已经在这里看过rails api,我正在阅读ActiveRecord support。
Rails不直接支持;最接近它可能是validates_format_of,或提供您自己的自定义验证程序。
我想你想要的是宝石。它不仅验证某件事是有效的日期,而且可以指定它应该在今天之前还是之后以及其他各种日期范围检查。
我们使用validates_timeliness,它对我们的目的非常有效。 +1 –
为补充其他的答案,请注意您可以定义自定义的验证,让您使用您所提出的语法:
validates :transaction_date, :type => Date
如下:
class TypeValidator < ActiveModel::EachValidator
def validate_each(record, attribute, value)
record.errors.add attribute, (options[:message] || "is not of class #{options[:with]}") unless
value.class == options[:with]
end
end
当然,如果您想允许使用子类,则可以将测试更改为使用kind_of?
。
创建了一个新的创业板,以帮助validate types in rails和explanatory blog post存在回答更多的“为什么”它创建的第一个地方。
与此库您的代码将简单为:当一个除了一个Date
任何分配给:transaction_date
class Post < ActiveRecord::Base
validates_type :transaction_date, :date
end
这会抛出异常。
是的http://edgeguides.rubyonrails.org/active_record_validations.html – lurker