필자는 Rails 앱에서 냄새 테스트를 통과하지 못하고 리팩토링하는 방법을 모르겠습니다.Obj의 배송지 찾기 Radius가 지오 코딩 된 주소 내에 있음
현재 사용자는 양식에 주소를 입력 할 수 있으며 목표는 지정된 배달 반경 내에있는 모든 배달 회사를 침뱉는 것입니다.
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
이궁을. where
동일한 결과를 얻으려면 SQL 문을 수행하는 방법을 잘 모르겠습니다.
'distance_from'은 어떻게 보이나요? – alexsmn
안녕하세요 @ 거리 번호는 다음을 수행하는 지오 코더 (Geocoder) 메소드입니다 :'obj.distance_from ([40.714, -100.234]) # 임의의 점에서 객체까지의 거리' – Anthony