我正在寻找一种从Active Record关系中获取一组id的简单/快捷方法。
目前我有:
product_ids = Product.select(:id).where(:colour => 'blue').all.map{|p|p.id}
但那太乱了,需要一张地图..
这样的事情会更酷:
product_ids = Product.where(:colour => 'blue').ids
有什么想法吗?
谢谢:)
答案 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数组。