2010-12-02 77 views
4

刚刚发现这个比较实际上是区分大小写的。任何人都知道以不区分大小写的方式来完成相同的比较吗?Ruby:区分大小写的数组比较

CardReferral.all.map(&:email) - CardSignup.all.map(&:email) 

回答

9

我不认为有一个像减号来的任何“直接”的方式,但如果你不介意在小写所有的结果,你可以这样做:

CardReferral.all.map(&:email).map(&:downcase) - CardSignup.all.map(&:email).map(&:downcase) 

否则,你将不得不使用find_allreject手工做的比较:

signups = CardSignup.all.map(&:email).map(&:downcase) 
referrals = CardReferral.all.map(&:email).reject { |e| signups.include?(e.downcase) } 

我建议阅读Ruby的标准类型的引用可能会帮助你拿出合作德这样。例如,“Programming Ruby 1.9”具有从第487页开始解释的Enumerable对象的所有方法(find_all位于第489页)。

+0

啊伟大的一点!欢迎来到SO – Trip 2010-12-02 20:29:07