刚刚发现这种比较实际上是区分大小写的。任何人都知道一种不区分大小写的方法来完成相同的比较吗?
CardReferral.all.map(&:email) - CardSignup.all.map(&:email)
答案 0 :(得分:9)
我认为没有像减号运算符那样的“直接”方式,但是如果你不介意以小写字母获得所有结果,你可以这样做:
CardReferral.all.map(&:email).map(&:downcase) - CardSignup.all.map(&:email).map(&:downcase)
否则,您必须使用find_all
或reject
手动进行比较:
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页)。