Ответ 1
Оба кажутся желательным поведением для: если вариант, упомянутый выше, есть что-то, что я не вижу?
Я предполагаю, что:
Более желательно разрешить Procs, поскольку они не заботятся о количестве аргументов. Поэтому я мог бы легко написать любой из ниже:
validates_presence_of :name, :if => Proc.new{|f| f.display_name.blank? } # I care about 'f' here as I need it to check something.
... и:
validates_presence_of :secret_sauce, :if => Proc.new{ MyApp::REQUIRE_SECRET_SAUCE } # I don't care about any arguments being passed in.
Это может показаться второстепенным, но я думаю, что это добавляет гибкости.