2016-03-28 9 views
1

Ich habe ein Problem, wo ich nur die Duplikate aus 2 Array von aktiven Datensatz Objekte entfernen müssen. Die einzige Sache ist es, es nur von der Datenbank zu entfernen und ich muss es nur in diesem Fall aus dem Array entfernen. Ich folgte diesem Remove object from an array of objects und versuchte auch ein paar andere Dinge und sie waren in der Lage, es aus dem Speicher zu entfernen und explizit aus Array und nicht die Datenbank zu entfernen, aber ich bin nicht in der Lage, es zu replizieren. Irgendwelche Vorschläge wären großartig. Danke allen!Entfernen Sie Objekt aus dem Array, ohne es aus der Datenbank zu löschen

company_links  = CompanyLinkType.where(company_id: company_ids, contact_linktype_id: 3) 
other_company_links = CompanyLink.where(company_id: company_ids, link_type: 'Twitter') 


company_links.each do |company_link| 
    other_company_links.each do |other_company_link| 
    # checks if id and url match, need to remove obj from company_link array 
    if other_company_link.company_id == company_link.company_id && other_company_link.url == company_link.contact_link_url 
     company_link.delete 
     Rails.logger.info"+++++++++DELETED++++++++++" 
    end 
    end 
end 
+0

Wenn beide Arrays gleiche Art von Objekten Sie können oder zwei Arrays wie: 'company_links || other_company_links "es wird das gleiche Ergebnis wie gewünscht zurückgeben. –

Antwort

2

Wenn Sie die Protokollierung nicht brauchen:

company_links = company_links.reject do |company_link| 
    other_company_links.any? do |other_company_link| 
     company_link.company_id == other_company_link.company_id && other_company_link.url == company_link.contact_link_url 
    end 
end 
+0

Hey danke, ich bekomme diesen Fehler obwohl. Irgendwelche Ideen? NoMethodError: undefinierte Methode 'delete_if 'für # Chris

+0

Ahh, du musst' reject' verwenden, da 'delete_if' /' reject! 'Nur für' Array' definiert sind, nicht' Enumerable '. Ich habe meine Antwort aktualisiert. –

0

ändern company_link.delete-company_links.delete(company_link)

+0

hey danke, aber es entfernt immer noch den Eintrag aus der Datenbank. – Chris

Verwandte Themen