我在User.rb模型内部添加一个验证器,以验证在创建设计用户之前给出的生日日期超过18年。未知的验证器:在验证日期在Rails中的'BeforeValidator'
这是我的验证。
# user.rb
validates :birthdate, :before => lambda { 18.years.ago }, :before_message => "must be at least 18 years old"
用户模式
# User schema
t.date "birthdate"
问题里面是试图保存对象时,我发现了以下错误。
ArgumentError in Devise::RegistrationsController#create
Unknown validator: 'BeforeValidator'
它的工作原理是在您的示例中添加'18.years.ago.to_date'。 – Martin 2012-04-25 00:41:27
你不必定义一个自定义的验证器:)见'验证'文档或[我的答案](http://stackoverflow.com/a/10306906/186424) – 2012-04-25 14:15:41
@Andión,不,我不知道。而我没有:)自定义验证器是具有'validate_each'方法的对象。所以在阅读文档时你分心了。而你的代码是完全错误的。你试图比较日期和Fixnum(18)。 – jdoe 2012-04-25 14:57:52