Così ho eseguire una query al DB e ho una gamma completa di oggetti:Rails filtrano array di oggetti dal valore di attributo
@attachments = Job.find(1).attachments
Ora che ho un array di oggetti che non si desidera eseguire un'altra query db, ma vorrei per filtrare l'array in base alla Attachment
oggetto del file_type
modo che io possa avere un elenco di attachments
dove il tipo di file è 'logo'
e poi un altro elenco di attachments
dove il tipo di file è 'image'
Qualcosa così:
@logos = @attachments.where("file_type = ?", 'logo')
@images = @attachments.where("file_type = ?", 'image')
Ma in memoria anziché una query DB.
Cheers
Come la soluzione di @ Vik è praticamente ideale, aggiungerò semplicemente che in casi binari, potresti usare una funzione 'partizione' per rendere le cose più dolci. http://ruby-doc.org/core-1.9.3/Enumerable.html#method-i-partition – Vlad
Grazie a @Vlad, è bello, ma supporta solo se abbiamo bisogno di raccogliere solo due cose dall'oggetto. – Vik
Sì, è per questo che ho detto "binario" :). Nella domanda, apparentemente c'era una scelta di logo o immagine, quindi ho aggiunto questo per completezza. – Vlad