我使用此代碼來獲取我的網站上給定距離內的所有廣告。我有兩個模型,廣告和位置。每個廣告都有一個位置。我對每個位置的地址字段進行地理編碼,以查找位於用戶搜索範圍內的地址字段。附近地理位置的地理編碼使用了太多的Google地圖查詢
此代碼可能需要重構,但我設法得到它做什麼,我需要它;當用戶搜索地址時,會顯示特定距離內的所有廣告。
的問題是代碼執行的每一個廣告查詢,並與我的數據庫1000頁的廣告,這很快越過谷歌地圖的限制。我有用戶可以點擊的按鈕來改變搜索距離,每次點擊都會對每個廣告進行查詢。有沒有另外一種方法可以編碼,這將不需要太多的查詢?
#find ads with locations in range of user address search
ads_within_distance = Ad.select { |ad| ad.location.distance_from(cookies[:search_address]) <= distance.to_f }
ads_within_distance.each do |ad|
nearby_ads_id_array = ad.id
end
@nearby_ads = Ads.where(id: nearby_ads_id_array).paginate(:page => params[:page], :per_page => 5).order('created_at DESC')
這顯然可以做到,因爲像meetup.com這樣的許多網站都有這個功能。我願意使用任何最有效的方法。我真的很感激任何意見。