自定义验证不起作用

时间:2014-02-21 12:00:52

标签: ruby-on-rails ruby ruby-on-rails-3

我写了自己的基本验证:

 validate :valid_date, allow_blank: true  
 .....

   private
def valid_date
    a = geburtsdatum.split('.')
    Date.valid_date?(a[2],a[1],a[0])
end

在我的帖子请求中传递给方法的参数是:

 {"patient"=>{"vorname"=>"sdfss", "name"=>"sdf", "geburtsdatum"=>"45.23.1994"}} 

但不知何故它不会工作我得到这个错误:

 undefined method `split' for nil:NilClass

意味着我无法正确访问参数geburtsdatum!我怎样才能解决这个问题?感谢

1 个答案:

答案 0 :(得分:2)

您需要在验证器中添加错误:

def valid_date
  a = geburtsdatum.split('.')
  errors.add(:<invalid_field_name>, 'is invalid') unless Date.valid_date?(a[2],a[1],a[0])
end
简而言之,

valid?方法:1。运行验证,2。返回errors.any?