ActiverEcord按标题条件最近距离返回UNIQ项目



我有以下关系,因为相同的产品可以在多家商店中存在,因此DB将同一产品记录在数据库中使用不同的store_id,而每个商店的不同store_id,我还将每个产品的坐标存储现在,我的查询返回每个商店的标题重复产品。

为了快速修复,我如何将查询修改为仅返回最接近的产品,并可以按产品标题进行分组。顺便说一下

class Product < ActiveRecord::Base
   belongs_to :store
end
class Store < ActiveRecord::Base
   has_many :products
end
ID TITLE   STORE_ID
1  product_1  1
2  product_1  2
3  product_1  3
4  product_2  1
5  product_2  2
6  product_2  3

我认为您在模型中有误解。如果可以在多家商店中使用相同的产品,则产品不属于商店。因为它可能是几个。

您应该将关联更改为has_and_belongs_to_manyhas_many through。但是,如果您真的希望完成此查询,则可以在查询中使用group方法。像Product.near(...).group(:title)

您也可以在轨道上过滤。假设它已经是有序集,类似于

@products.to_a.uniq(&:title)

将有效。

最新更新