0

如何找回已得到了相同的纬度和经度Rails的:从活动记录的阵列唯一地址地址

> addresses 
=> [#<Address id: 10, country: "IN", state: "KA", latitude: "12.971513803339702", longitude: "77.59443104418949", user_id: 11>, #<Address id: 9, country: "IN", state: "KA", latitude: "12.971513803339702", longitude: "77.59443104418949", user_id: 10>] 

在这种情况下,我需要的ActiveRecord的任何一个唯一的地址,纬度和经度具有类似值。

+0

使用try ['group'](http://api.rubyonrails.org/classes/ActiveRecord/QueryMethods.html#method-i-group)。 – vee

+0

addresses = Address.all.to_a 是不是可以通过拒绝那些匹配的经度和纬度的记录来获得uniq数组集合 –

回答

1

你可以按它的经度和纬度,然后将地址组中选择一次至少2个地址:

addresses. 
    group_by { |address| [address.latitude, address.longitude] }. 
    select { |location, addresses| addresses.size >= 2 }. 
    keys 

根据您的使用情况,你可能想使用distinct(注意,失去iduser_id信息):

Address.select(:country, :state, :latitude, :longitude).distinct 
+0

addresses = Address.all.to_a - >是不是有可能获得uniq集通过拒绝具有匹配的经度和纬度的那些记录来排列数组。 –

+0

@ManjunathP:我更新了我的答案。这取决于你想用这个清单来做什么。你能解释一下你想用独特的地址列表来实现吗? – spickermann

+0

我使用了group_by {}谢谢。 –