Rails filtering array of objects by attribute value

前端 未结 5 2026
天涯浪人
天涯浪人 2020-12-12 13:33

So I perform a query to the db and I have a complete array of objects:

@attachments = Job.find(1).attachments

Now that I have an array of o

5条回答
  •  自闭症患者
    2020-12-12 14:07

    I'd go about this slightly differently. Structure your query to retrieve only what you need and split from there.

    So make your query the following:

    #                                vv or Job.find(1) vv
    attachments = Attachment.where(job_id: @job.id, file_type: ["logo", "image"])
    # or 
    Job.includes(:attachments).where(id: your_job_id, attachments: { file_type: ["logo", "image"] })
    

    And then partition the data:

    @logos, @images = attachments.partition { |attachment| attachment.file_type == "logo" }
    

    That will get the data you're after in a neat and efficient manner.

提交回复
热议问题