2010-12-02 4 views
0

J'ai deux matrices. Si un objet dans un réseau n'a pas d'attribut de courrier électronique correspondant dans l'autre, je veux construire un tableau de tous les objets ..Extraction d'un objet non correspondant à partir de deux matrices

Mes tentatives d'attaquer le dragon:

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

qui fait presque ce J'ai besoin! Malheureusement, il ne fournit qu'un e-mail dans un tableau. Et je veux tout l'objet.

Répondre

1

Exemple simplifié:

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

Donc je suppose que dans votre cas, il va quelque chose comme:

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

Ou ... :-) intégrant les commentaires

t = CardSignup.all 
CardReferral.all.reject { |e| t.include? e.email } 
+0

Est-ce que cela appelle 'CardSignup.all' dans chaque itération de la boucle? N'est-ce pas inefficace? –

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

Incroyable! Je vous remercie! – Trip

Questions connexes