2016-08-03 2 views
0

지오 코더 기능을 사용하려는 location_pickup 및 location_dropoff가있는 예약 모델이 있습니다. 모델 (아래)에서 지오 코더 매핑을 선언했지만, 어떻게 든 마지막 선언 (location_pickup) 만 데이터베이스에서 업데이트되고 있습니다. 여기에 뭐가 잘못되었나? 로렌조에 의해 제안 레일 지오 코더의 다중 주소 문제

class Booking < ActiveRecord::Base 
belongs_to :user 

geocoded_by :location_dropoff, :latitude => :location_dropoff_latitude, :longitude => :location_dropoff_longitude 

geocoded_by :location_pickup, :latitude => :location_pickup_latitude, :longitude => :location_pickup_longitude 

after_validation :geocode, if: :location_dropoff_changed? 
after_validation :geocode, if: :location_pickup_changed? 

validates :location_pickup, presence: true 
validates :location_dropoff, presence: true 
end 

는 두 가지 방법을 정의하는 시도하지만,이 모델의 메소드 geocoded_by를 재정의 두 번째 시간을 geocoded_by 호출 할 때 여전히

class Booking < ActiveRecord::Base 
    before_validation :geocode_location_dropoff 
    before_validation :geocode_location_pickup 
    belongs_to :user 
    def geocode_location_dropoff 
     geocoded_by :location_dropoff, 
      latitude: :location_dropoff_latitude, 
      longitude: :location_dropoff_longitude 
     end 
     def geocode_location_pickup 
     geocoded_by :location_pickup, 
      latitude: :location_pickup_latitude, 
      longitude: :location_pickup_longitude 
     end 

     after_validation :geocode, if: :location_dropoff_changed? 
     after_validation :geocode, if: :location_pickup_changed? 

     validates :location_pickup, presence: true 
     validates :location_dropoff, presence: true 
    end 

답변

1

작동하지 않습니다.

a = 1 
a = 2 

그리고 '는이'그것은 단지 값을가집니다 호출하는 경우 당신이 상상할 수있는 '2'로 : 당신은 다음과 거의 같음을 뭐. 모델에 여러 개의 '물건'을 지오 코딩하려는 경우 두 개의 다른 클래스 (하나는 LocationDropoff 및 다른 LocationPickup)를 작성하여 독립적으로 지오 코딩하여 예약 클래스에 속하게 할 것을 제안합니다. 그렇지 않으면 독자적으로 서로 다른 속성을 위치 정보로 지정하는 고유 한 메소드를 정의해야하며 콜백을 사용할 수 있습니다.

+0

감사! 내 자신의 방법을 정의하고 독립적으로 지리적 위치를 지정하는 법. 나는 두 가지 다른 방법을 만들고 그것들을 전에 검증하려했습니다. 그게 작동하지 (질문에 피곤한 코드를 추가) – Mayank