Ruby on rails Ruby:不区分大小写的数组比较
刚刚发现这个比较实际上是区分大小写的。有人知道一种不区分大小写的方法来完成相同的比较吗Ruby on rails Ruby:不区分大小写的数组比较,ruby-on-rails,ruby,arrays,Ruby On Rails,Ruby,Arrays,刚刚发现这个比较实际上是区分大小写的。有人知道一种不区分大小写的方法来完成相同的比较吗 CardReferral.all.map(&:email) - CardSignup.all.map(&:email) 我不认为有任何像减号运算符这样的“直接”方式,但如果您不介意所有结果都用小写,您可以这样做: CardReferral.all.map(&:email).map(&:downcase) - CardSignup.all.map(&:email).ma
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) }
我建议,阅读Ruby标准类型的参考可能会帮助您产生这样的代码。例如,“编程Ruby 1.9”从第487页开始解释了对象的所有方法(
find_all
在第489页)。在旁注:这到底是什么“(&:”意思?这两个都包括不必要的迭代。映射{c | email.downcase}
或拒绝{c | signups.index(c.email.downcase)}
将只起作用fine@Trip:谷歌搜索“ruby ampersand operator”。它是符号#to#u proc方法。@thorncp:我认为任何一种方法都可以。大多数性能敏感的东西都发生在数据库中,而且在可读性方面,它们都同样简洁。拒绝{| c | signups.index(c.email.downcase)}
顺便说一句,它的作用并不完全相同,因为它提供的是CardReferral对象,而不是字符串。注册。包括?
比注册。索引
更能说明意图。