从两个数组中拉出一个不匹配的对象

时间:2010-12-02 17:26:45

标签: ruby-on-rails ruby arrays

我有两个数组。如果一个数组中的对象在另一个数组中没有匹配的电子邮件属性,我想从所有这些对象中构建一个数组。

我试图攻击龙:

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

这几乎可以满足我的需求!不幸的是,它只提供数组中的电子邮件。我想要整个对象。

2 个答案:

答案 0 :(得分:2)

t = CardSignup.all.map(&:email)
result = CardReferral.all.reject { |i| t.include? i.email }

答案 1 :(得分:1)

简化示例:

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 }