Ich habe 2 verwandte Schienen ModelleRails innere join mit Geokodierung gem kombiniert
class Location < ActiveRecord::Base
has_many :rates
geocoded_by ....
end
class Rate < ActiveRecord::Base
belongs_to :location
end
ich den Geocoder gem bin mit - http://www.rubygeocoder.com
ich alle Raten mit einem bestimmten pair
Attribut suchen, die innerhalb eines sind bestimmte Entfernung zum Benutzer.
In SQL, würde ich ein innere auf den Raten verbinden
SELECT * FROM rates INNER JOIN locations ON rates.location_id=locations.id;
Dann legt eine in dem Zustand an dem Paar Attribute zu filtern, und dann den in der Nähe Methode des Geocoder verwendet auf der resultierende Tabelle (die in der Nähe von Methode funktioniert durch Einfügen einer Where-Bedingung in die Abfrage, die die Entfernung mit Längen-und Breitengrad Attribute vor Ort berechnet) nur die Zeilen innerhalb der richtigen Entfernung zu wählen
Wie kann ich dies in Schienen? Ich habe versucht,
rates = Rate.joins(:locations)
I
bekommenActiveRecord::ConfigurationError: Association named 'locations' was not found; perhaps you misspelled it?
ich diesen
rates = Rate.joins(:locations).near(my_latitude, my_longitude, distance).where(:rates => {:pair => 'xxxx'})
tun möchte, aber ich bekomme
undefined method `near' for #<ActiveRecord::Relation:0xa075ff8>
Da es ein belongs_to ist, ich denke, ': locations' singulär sein muss. Nicht sicher, ob das funktioniert, aber Sie müssen möglicherweise Ihre Methodenaufrufe einfach neu ordnen. Hängt davon ab, wie der Edelstein mit ARel funktioniert. 'Rate.near (my_latitude, my_longitude, distance) .join (: Speicherort) .where (: rates => {: pair => 'xxxx'})' – agmcleod