So führe ich eine Anfrage an die db und ich habe eine komplette Reihe von Objekten:Rails Filtern Array von Objekten durch Attributwert
@attachments = Job.find(1).attachments
Nun, da ich ein Array von Objekten habe ich möchte nicht ausführen ein weitere db-Abfrage, aber ich mochte das Array auf der Grundlage des Attachment
Objekt file_type
filtern, so dass ich eine Liste von attachments
haben kann, wo der Dateityp 'logo'
und dann eine andere Liste von attachments
ist, wo der Dateityp 'image'
Etwas so:
@logos = @attachments.where("file_type = ?", 'logo')
@images = @attachments.where("file_type = ?", 'image')
Aber im Speicher statt einer DB-Abfrage.
Prost
Da @ Viks Lösung ziemlich ideal ist, werde ich das nur in binären Fällen hinzufügen, Sie könnten eine "Partitions" -Funktion verwenden, um die Dinge süß zu machen. http://ruby-doc.org/core-1.9.3/Enumerable.html#method-i-partition – Vlad
Dank @Vlad, das ist cool, aber es unterstützt nur, wenn wir nur zwei Dinge vom Objekt sammeln müssen. – Vik
Ja, deshalb habe ich "binary" gesagt :). In der Frage gab es anscheinend eine Wahl von Logo oder Bild, also fügte ich das zur Vollständigkeit hinzu. – Vlad