Ruby on rails 如何在rails中从select条件返回true/false语句

Ruby on rails 如何在rails中从select条件返回true/false语句,ruby-on-rails,validation,conditional,Ruby On Rails,Validation,Conditional,我正在尝试选择一个数组,并检查数组中的任何对象是否为false。如果其中任何一个为false,我希望返回false的最终值 如果所有这些都是真的,我希望返回真的 这是我的 validates_presence_of :email, :if => Proc.new { |user| user.organizations.find(:all).select {|org| org.contact_24} } 不幸的是,这只是返回数组 你会怎么做呢?哇,一个简单的任务太复杂了。怎么样 def s

我正在尝试选择一个数组,并检查数组中的任何对象是否为false。如果其中任何一个为false,我希望返回false的最终值

如果所有这些都是真的,我希望返回真的

这是我的

validates_presence_of :email, :if => Proc.new { |user| user.organizations.find(:all).select {|org| org.contact_24} }
不幸的是,这只是返回数组


你会怎么做呢?

哇,一个简单的任务太复杂了。怎么样

def some_func(arr)
  !arr.include?(false)
end

也许我错过了什么。。。但是问题只是问如何返回'false',数组是否包含'false',这就是问题所在。

使用
exists?
方法在数据库中执行检查。这确保了所有的计算都是在数据库中完成的,而不是在客户端代码中完成的

validates_presence_of :email, 
       :unless => Proc.new { organizations.exists?(:contact_24 => false)}
如果您仍然坚持在客户端执行此操作,则:

validates_presence_of :email, 
       :unless => Proc.new { organizations.any?{|o| o.contact_24 != true}}
好的,那么你的程序:

org.contact_24
选择将只返回一个数组。。。因此,如果所有org.contact_24都为true,则需要返回true

validates_presence_of :email, :if => Proc.new { |user| user.organizations.find(:all).collect {|org| org unless org.contact_24}.compact.blank? }
这将构建一个组织的数组,其中包含虚假的联系人。然后压缩数组,如果为空则返回true

所以,如果任何记录都不是真的,那么它就是假的

我建议移动organizations.find(:all).collect{| org | org除非org.contact_24}.compact.blank?进入一个范围,因此您将得到:

user.organizations.not_contacted_in_24_hours

我将如何在我的新程序中实现这一点?