ОК, так что ваш процесс:
org.contact_24
Select просто вернет массив ... Так что вам нужно вернуть true, если все org.contact_24 верны.
validates_presence_of :email, :if => Proc.new { |user| user.organizations.find(:all).collect {|org| org unless org.contact_24}.compact.blank? }
Это создаст массив организаций, которые имеют contact_24, которые являются ложными. Затем он сжимает массив и возвращает true, если он пуст.
Итак, будет неверно, если какие-либо записи не соответствуют действительности.
Я бы рекомендовал переместить организации.find (: все) .collect {| org | org разве что org.contact_24} .compact.blank? в область видимости, так что вы в конечном итоге:
user.organizations.not_contacted_in_24_hours