ActiveRecord按子属性查询和计数 - 更好的解决方案?

时间:2014-07-08 18:32:17

标签: ruby-on-rails ruby activerecord ruby-on-rails-4

上下文

  • Categorylist has_many Itemlist
  • Itemlist有两个布尔属性 - request_list& inventory_list - 无论是真还是假(独立,都可以是真或假或其他)

现在,我想迭代Categorylist每个Categorylist包含至少一个Itemlistinventory_list属性设置为true的{​​{1}}。

用语言:我有一组主要的类别和项目,我创建为管理员。我希望这些项目中的一些出现在请求页面上,其他项目出现在库存页面上,有些项目出现在两者上。在每个请求/库存页面上,我只想显示包含我想要在该请求/库存页面上显示的项目的类别。

解决方案:

下面我有一个有效的解决方案,但是看看它是否可以进一步改进。谢谢!

Categorylist.all.select { |c| c.itemlists.pluck("inventory_list").include? true }.each do |n|

1 个答案:

答案 0 :(得分:0)

我认为这应该符合您的要求:

Categorylist.includes(:itemlists).where(itemlists: { inventory_list: true })