验证属性的长度(如果存在)

Ale*_*lek 4 activerecord ruby-on-rails ruby-on-rails-4 rails-activerecord ruby-on-rails-4.2

如何在不需要模型属性存在的情况下进行验证,但如果存在,属性的长度必须超过三个字符?

pot*_*hin 7

您可以允许属性为空allow_blank: truenilallow_nil: true,也可以检查length::

validates :attr, length: {minimum: 4}, allow_blank: true
validates :attr, length: {minimum: 4}, allow_nil: true
Run Code Online (Sandbox Code Playgroud)

您还可以使用if:unless::

validates :attr, length: {minimum: 4}, unless: -> (o) do o.blank? end
Run Code Online (Sandbox Code Playgroud)