我在我的Rails應用程序中寫了一個函數,它沒有通過氣味測試,我不確定如何重構。查找所有Obj who's Delivery半徑在地理編碼地址內
目前,用戶可以輸入表單中的地址,我的目標是吐出給定交付半徑內的任何送貨公司。現在,看起來像這樣:
class Dealers < ActiveRecord::Base
validates :name, presence: true
validates :delivery_radius, numericality: { only_integer: true }
end
所以搜索進入我的控制,我調用一個方法,我寫(available_deliveries
)是這樣的:
@dealers = Dealer.available_deliveries(Geocoder.coordinates(search_params))
search_params
僅僅是街道,城市&狀態。
我Dealer#available_deliveries
方法是這樣的:
def self.available_deliveries(geo)
dealers = []
Dealer.all.each do |dealer|
if dealer.distance_from(geo) <= dealer.delivery_radius
dealers << dealer
end
end
dealers
end
YIKES這是醜陋的。我不確定如何執行where
SQL語句以獲得相同的結果...
'distance_from'是怎麼樣的? – alexsmn
Hi @ uhn-nohn'distance_from'是一個Geocoder方法,它執行此操作:'obj.distance_from([40.714,-100.234])#從任意點到對象的距離 – Anthony