ruby-on-rails - Rails 按属性值过滤对象数组

标签 ruby-on-rails activerecord

因此,我对数据库执行查询,并且获得了完整的对象数组:

@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/

相关文章:

ruby-on-rails - 登录后重定向到特定 URL

ruby-on-rails - 按 Rails 中的嵌套关​​联进行分组和计数

ruby-on-rails - 测试 Stripe 的 webhooks - 总是出错

ruby-on-rails - Ruby on Rails 指南

ruby-on-rails - 错误 : parent directory is world writable but not sticky

mysql - 在删除整行之前将特定字段值移动到另一个表

MySQL 外键约束在我的 Rails 3.1 应用程序中抛出 ActiveRecord::StatementInvalid(锁定等待超时)

ruby-on-rails - 在 Ruby 中转换只有一个对象的数组

sql - Rails PG::UndefinedTable:错误:缺少表的 FROM 子句条目

mysql - 如何优化这个SELECT?