Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Ruby:不区分大小写的数组比较_Ruby On Rails_Ruby_Arrays - Fatal编程技术网

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对象,而不是字符串。
注册。包括?
注册。索引
更能说明意图。