Ich habe ein Buchungsmodell mit location_pickup und location_dropoff, auf dem ich die Geocoder-Funktion verwenden möchte. Ich habe das Geocoder-Mapping im Modell deklariert (siehe unten), aber irgendwie wird nur die letzte Deklaration (location_pickup) in der Datenbank aktualisiert. Was genau mache ich hier falsch?Mehrere Adressen in Schienen Geocoder Ausgabe
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
zwei Methoden versucht zu definieren, wie Lorenzo vorgeschlagen, aber es funktioniert immer noch nicht
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
Danke! Wie definiere ich meine eigene Methode und geolocate unabhängig. Ich habe zwei verschiedene Methoden erstellt und versucht, sie vorher zu validieren. Es funktioniert jedoch nicht (fügte der Frage den müden Code hinzu) – Mayank