Rails 4 + ActiveRecord:如何使用.group返回记录数组,而不仅仅是单个记录



我有一个Product模型,has_many ProductImage s。

这些图像中的每一个都有一个称为name的属性。

,

产品:t恤

t恤有图片:image1 name:blue, image2 name:blue, image3 name:green

是否有一个方法在ActiveRecord组所有的T-shirt的图像到数组的数组基于名称?我想要的东西,将返回[[image1, image2], [image3]],因为image1和image2有相同的颜色,他们被分组到一个数组。

文档(http://guides.rubyonrails.org/active_record_querying.html#group)说.group(:name)不会做我想要的:"这将为数据库中有订单的每个日期提供单个Order对象。"

根据您想要的输出,您可能想要查看Ruby Enumerable group_by方法。这将返回一个哈希值然后你可以得到values:

product_id = <T-Shirt Product ID Here>
ProductImage.where(product_id: product_id).group_by(&:name).values

这将给出一个数组的数组,其中productimage按名称在内部数组中分组在一起。

最新更新