Rails Active Record - 从关系中获取id数组

时间:2013-06-14 07:11:19

标签: ruby-on-rails activerecord

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

目前我有:

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

但那太乱了,需要一张地图..

这样的事情会更酷:

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

有什么想法吗?

谢谢:)

3 个答案:

答案 0 :(得分:63)

更整洁的解决方案:

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

答案 1 :(得分:13)

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

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

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

答案 2 :(得分:9)

要构建以前的答案,如果您正在使用关联,则只需将_ids附加到查询中即可。

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

supplier.product_ids

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