Rails filtrant le tableau d’objects par valeur d’atsortingbut

Donc, j’effectue une requête sur la firebase database et j’ai un tableau complet d’objects:

@attachments = Job.find(1).attachments 

Maintenant que j’ai un tableau d’objects, je ne veux pas effectuer une autre requête de firebase database, mais j’aimerais filtrer le tableau en fonction du type de fichier de l’object Attachment file_type pour avoir une liste de attachments dont le type de fichier est 'logo' et puis une autre liste de attachments dont le type de fichier est 'image'

Quelque chose comme ça:

 @logos = @attachments.where("file_type = ?", 'logo') @images = @attachments.where("file_type = ?", 'image') 

Mais en mémoire au lieu d’une requête db.

Essayez:

C’est bon :

 @logos = @attachments.select { |attachment| attachment.file_type == 'logo' } @images = @attachments.select { |attachment| attachment.file_type == 'image' } 

mais pour des raisons de performance, vous n’avez pas besoin d’itérer deux fois @attachments:

 @logos , @images = [], [] @attachments.each do |attachment| @logos < < attachment if attachment.file_type == 'logo' @images << attachment if attachment.file_type == 'image' end 

Si vos pièces jointes sont

 @attachments = Job.find(1).attachments 

Ce sera un tableau d’objects d’attachement

Utilisez la méthode select pour filtrer en fonction de file_type.

 @logos = @attachments.select { |attachment| attachment.file_type == 'logo' } @images = @attachments.select { |attachment| attachment.file_type == 'image' } 

Cela ne déclenchera aucune requête de firebase database.

avez-vous essayé de charger avec impatience?

 @attachments = Job.includes(:attachments).find(1).attachments