因此,我对数据库执行查询,并且获得了完整的对象数组:
@attachments = Job.find(1).attachments
现在我有了一个对象数组,我不想执行另一个数据库查询,但我想根据 Attachment
过滤该数组。对象的file_type
这样我就可以获得 attachments
的列表其中文件类型为 'logo'
然后是另一个列表 attachments
其中文件类型为 'image'
类似这样的事情:
@logos = @attachments.where("file_type = ?", 'logo')
@images = @attachments.where("file_type = ?", 'image')
但是在内存中而不是数据库查询中。
最佳答案
尝试:
这很好:
@logos = @attachments.select { |attachment| attachment.file_type == 'logo' }
@images = @attachments.select { |attachment| attachment.file_type == 'image' }
但就性能而言,您不需要迭代 @attachments 两次:
@logos , @images = [], []
@attachments.each do |attachment|
@logos << attachment if attachment.file_type == 'logo'
@images << attachment if attachment.file_type == 'image'
end
关于ruby-on-rails - Rails 按属性值过滤对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10069993/