我正在寻找一种从 Active Record 关系中获取 id 数组的简单/快速方法。
目前我有:
product_ids = Product.select(:id).where(:colour => 'blue').all.map{|p|p.id}
但这很混乱,需要一张地图..
像这样的东西会更酷:
product_ids = Product.where(:colour => 'blue').ids
有任何想法吗?
谢谢 :)
我正在寻找一种从 Active Record 关系中获取 id 数组的简单/快速方法。
目前我有:
product_ids = Product.select(:id).where(:colour => 'blue').all.map{|p|p.id}
但这很混乱,需要一张地图..
像这样的东西会更酷:
product_ids = Product.where(:colour => 'blue').ids
有任何想法吗?
谢谢 :)
更简洁的解决方案:
Product.where(:colour => 'blue').pluck(:id)
在最新版本的 Rails 中,ids
可以使用该方法。
Product.where(color: 'blue').ids
一直在阅读 rails 4 文档,看起来他们支持ids
我说现在在问题中很酷的方法。
http://api.rubyonrails.org/classes/ActiveRecord/Calculations.html#method-i-ids
很高兴知道团队正在读我的想法:)
为了建立之前的答案,如果您正在处理关联,您可以附加_ids
到查询中。
因此,在您的示例中,如果 a Supplier
has_many
Products
,则:
supplier.product_ids
将返回属于供应商的产品 ID 数组。