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 {}謝謝。 –