刚刚发现这个比较实际上是区分大小写的...有人知道一个不区分大小写的实现方式吗?
CardReferral.all.map(&:email) - CardSignup.all.map(&:email)
刚刚发现这个比较实际上是区分大小写的...有人知道一个不区分大小写的实现方式吗?
CardReferral.all.map(&:email) - CardSignup.all.map(&:email)
我不认为有像减法操作符那样的“直接”方式,但如果你不介意将所有结果都转换成小写字母,你可以这样做:
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) }
Enumerable
对象的所有方法(find_all
在第489页)。请参考该书。
map { |c| c.email.downcase }
或reject { |c| signups.index(c.email.downcase) }
都可以很好地工作。 - thorncpreject { |c| signups.index(c.email.downcase) }
并不完全做相同的事情,因为它会给你CardReferral对象,而不是字符串。 - Jo Lisssignups.include?
表达意图比signups.index
更好。 - Andrew Grimm