In meinem Fall habe ich ein Modell Produkt has_one LocationWie Verwenden von Bereich in AR-Anforderung mit Joins?
Ich verwende einen Geocoder Edelstein, um die Position in der Nähe einer Entfernung zu suchen.
Der Antrag Location.near ([0, 0], 100) ist wie folgt aussehen:.
SELECT Stellen *, 6371,0 * 2 * ASIN (SQRT (POWER (SIN ((0 - Standorte .Lautheit) * PI()/180/2), 2) + COS (0 * PI()/180) * COS (Standorte.Länder * PI()/180) * POWER (SIN ((1 - Standorte.Langl) * PI()/180/2), 2))) AS Abstand, CAST (GRAD (ATAN2 (RADIANS (Länge - 1), RADIANS (Breite - 0))) + 360 AS Dezimal)% 360 AS Lager FROM \ "locations \" WO (6371.0 * 2 * ASIN (SQRT (LEISTUNG (SIN ((0 - locations.latitude) * PI()/180/2), 2) + COS (0 * PI()/180) * COS (locations.latitude * PI()/180) * POWER (SIN ((1 - locations.longitude) * PI()/180/2), 2))) < = 20) ORDER BY Abstand
Ich möchte so etwas wie dies zu tun:
Product.where(...).joins(:location).dosomething
Wie kann ich es tun?
Ja Es ist ein Bereich. Ich habe es versucht und habe 3 Anfragen: Vorschlag Laden (5442.1ms) SELECT "Vorschläge". * Von "Vorschläge" INNER JOIN "Standorte" ON "Standorte". "Locable_id" = "Vorschläge". "ID" UND "Standorte ". locationable_type" = 'Vorschlag' Standort laden (186.6ms) SELECT-Standorte. *, 6371.0 * 2 * ASIN (SQRT (LEISTUNG (SIN ((0 - locations.latitude) ... Vorschlag laden (4920.5ms) SELECT "Vorschläge". * FROM "Vorschläge" –
Was ist Vorschlag? Und können Sie den Code für "Location # in der Nähe" zeigen? – tsherif
Vorschlag == Produkt. Location # in der Nähe => https://github.com/alexreisner/geocoder /blob/master/lib/geocoder/stores/active_record.rb#L34 –