Ruby: сравнение массивов без учета регистра - PullRequest
4 голосов
/ 02 декабря 2010

Только что выяснили, что это сравнение на самом деле чувствительно к регистру.

1 Ответ

9 голосов
/ 02 декабря 2010

Я не думаю, что существует какой-либо "прямой" способ, например, оператор минус, но если вы не возражаете получить все свои результаты в нижнем регистре, вы можете сделать это:

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» есть все методы объекта Enumerable, описанные начиная со страницы 487 (find_all на странице 489).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...