Я не думаю, что существует какой-либо "прямой" способ, например, оператор минус, но если вы не возражаете получить все свои результаты в нижнем регистре, вы можете сделать это:
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).