mla*_*bie 4 ruby validation activerecord ruby-on-rails
在ActiveRecord模型中,它是否也被认为是最佳实践/必须在使用validates_presence_of
时使用validates_length_of
?
例如:
class Company < ActiveRecord::Base
validates_presence_of :name
validates_length_of :name, :in => 5..30
end
Run Code Online (Sandbox Code Playgroud)
对我来说,这似乎是多余的.长度在5到30之间意味着该属性也存在,但我看到这在任何地方都使用.它还意味着当真正只需要一个属性时,用户会收到两条关于相同缺失属性的错误消息.
我是否遗漏了某些内容,或者在验证数据时人们是否过于热心?
与validates_length_of一起使用时,validates_presence_of完全是冗余的,除非您提供:allow_nil => true
或者:allow_blank => true
为validates_length_of.
任何验证中allow_nil和allow_blank选项的默认值均为false.validates_presence_of仅在属性既不为空或空白时失败.因此,当allow_nil或allow_blank都不作为验证选项提供时,大多数提供的验证都会使validates_presence_of变为冗余.