Ruby:不区分大小写的数组比较

时间:2010-12-02 20:15:39

标签: ruby-on-rails ruby arrays

刚刚发现这种比较实际上是区分大小写的。任何人都知道一种不区分大小写的方法来完成相同的比较吗?

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

1 个答案:

答案 0 :(得分: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页)。