我有以下关系,因为同一产品可以存在于多个商店中,因此DB将相同的产品记录存储在数据库中,每个商店使用不同的store_id,我还存储每个产品的coords,现在我的查询按标题返回重复的产品对于每个商店。
为了快速修复,我如何修改查询,只返回最接近的产品,也可以按产品标题分组。 BTW我正在使用geocode gem和near函数来选择附近的产品([@ lat,@ long],20,顺序:@ sort.blank??'distance':false)
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
答案 0 :(得分:0)
我认为你的模型存在误解。如果同一产品可以在多个商店中,则产品不属于商店。因为它可能有几个。
您应该将关联更改为has_and_belongs_to_many
或has_many through
。但是,如果您确实希望完成此查询,则可以在查询中使用group
方法。
与Product.near(...).group(:title)
您也可以在Rails中过滤。假设它已经是一个有序的集合,比如
@products.to_a.uniq(&:title)
会起作用。