2010-02-27 4 views

ответ

7
class Model < ActiveRecord::Base 

    validates_presence_of :address, :if => :city? 

end 

:address и :city являются атрибутами Model.

+0

Это работает! Спасибо. Мне пришлось указать proc. См. Мой ответ за три разные вещи, которые принимает атрибут 'if'. –

5

validates_presence_of принимает атрибут if, который принимает одну из трех вещей, в соответствии с documentation: строка, метод или 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. 

Я в конечном итоге необходимости использовать процедурный, так как я хотел, чтобы убедиться, что определенный параметр был заполнен перед проверкой:

validates_presence_of :bar, :if => Proc.new { |foo| !foo.age.blank? } 
+0

Вместо того, чтобы создавать и отвечать, я предлагаю отредактировать исходный вопрос. –

+0

Спасибо! Это то, что я искал! – JGutierrezC