如果只填写另一个字段,如何验证字段?

Yuv*_*rmi 4 validation ruby-on-rails

如果在Ruby on Rails 2.3.5中填写了另一个字段,我将如何验证字段?

Sim*_*tti 7

class Model < ActiveRecord::Base

  validates_presence_of :address, :if => :city?

end
Run Code Online (Sandbox Code Playgroud)

:address并且:city都是Model.的属性.


Yuv*_*rmi 6

validates_presence_ofif根据文档,接受一个属于三件事之一的属性:字符串,方法或proc.

if - Specifies a method, proc or string to call to determine if the validation
should occur (e.g. :if => :allow_validation, or
:if => Proc.new { |user| user.signup_step > 2 }).
The method, proc or string should return or evaluate to a true or false value.
Run Code Online (Sandbox Code Playgroud)

我最终需要使用proc,因为我想确保在验证之前填写某个参数:

  validates_presence_of :bar, :if => Proc.new { |foo| !foo.age.blank? }
Run Code Online (Sandbox Code Playgroud)