36

我正在寻找一种从 Active Record 关系中获取 id 数组的简单/快速方法。

目前我有:

product_ids = Product.select(:id).where(:colour => 'blue').all.map{|p|p.id}

但这很混乱,需要一张地图..

像这样的东西会更酷:

product_ids = Product.where(:colour => 'blue').ids

有任何想法吗?

谢谢 :)

4

3 回答 3

76

更简洁的解决方案:

Product.where(:colour => 'blue').pluck(:id)

在最新版本的 Rails 中,ids可以使用该方法。

Product.where(color: 'blue').ids
于 2013-06-14T07:17:04.277 回答
15

一直在阅读 rails 4 文档,看起来他们支持ids我说现在在问题中很酷的方法。

http://api.rubyonrails.org/classes/ActiveRecord/Calculations.html#method-i-ids

很高兴知道团队正在读我的想法:)

于 2013-10-14T13:04:48.693 回答
14

为了建立之前的答案,如果您正在处理关联,您可以附加_ids到查询中。

因此,在您的示例中,如果 a Supplier has_many Products,则:

supplier.product_ids

将返回属于供应商的产品 ID 数组。

于 2015-12-07T20:31:04.753 回答