Por lo tanto, realizar una consulta a la base de datos y tengo una gama completa de objetos:rieles de filtrado matriz de objetos por valor de atributo
@attachments = Job.find(1).attachments
Ahora que tengo una matriz de objetos que no desea llevar a cabo otra consulta db, pero me gustaría para filtrar la matriz basada en la Attachment
objeto de file_type
para que pueda tener una lista de attachments
, donde el tipo de archivo es 'logo'
y luego otra lista de attachments
, donde el tipo de archivo es 'image'
Algo como este:
@logos = @attachments.where("file_type = ?", 'logo')
@images = @attachments.where("file_type = ?", 'image')
Pero en memoria en lugar de una consulta db.
Cheers
Como la solución de @ Vik es bastante ideal, solo agregaré eso en casos binarios, podrías usar una función de 'partición' para hacer las cosas dulces. http://ruby-doc.org/core-1.9.3/Enumerable.html#method-i-partition – Vlad
Gracias @Vlad, eso es genial, pero solo es compatible si tenemos que recopilar solo dos cosas del objeto. – Vik
Sí, es por eso que dije "binario" :). En la pregunta, aparentemente había una opción de logotipo o imagen, así que lo agregué para completarlo. – Vlad