Вытащить из двух массивов несовпадающий объект - PullRequest
0 голосов
/ 02 декабря 2010

У меня есть два массива.Если объект в одном массиве не имеет соответствующего атрибута электронной почты в другом, я хочу построить массив из всех этих объектов ..

Мои попытки атаковать дракона:

CardReferral.all.map(&:email) - CardSignup.all.map(&:email)

Это почти делает то, что мне нужно!К сожалению, он предоставляет только электронную почту в массиве.И я хочу весь объект.

Ответы [ 2 ]

2 голосов
/ 02 декабря 2010
t = CardSignup.all.map(&:email)
result = CardReferral.all.reject { |i| t.include? i.email }
1 голос
/ 02 декабря 2010

Упрощенный пример:

a = [:x, :y, :z]
b = [:a, :y, :b]
a.select { |e| ! b.include? e }
=> [:x, :z]

Так что, я думаю, в вашем случае это выглядит примерно так:

CardReferral.all.select { |e| ! CardSignup.all.include? e.email }

Или с учетом обратной связи :-) ...

t = CardSignup.all
CardReferral.all.reject { |e| t.include? e.email }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...