J'essaie d'utiliser le plugin GeoKit pour calculer la distance entre 2 points. Donc, l'idée est, je fais une recherche d'un article, et les résultats que je veux commander à distance. Donc j'ai un formulaire où j'entre l'article (que je cherche) et mon adresse. Ensuite, les rails doivent trouver tous les articles correspondant à ma requête et à ma commande par adresse.Rails JOIN TABLES
Alors maintenant, j'ai deux modèles: Article et utilisateur. Articles belongs_to Utilisateur et Utilisateur has_many Articles. Au modèle d'utilisateur j'ai l'information liée à ma latitude et longitude.
donc mon objet article a trois champs:
- id
- Nom
- user_id (FK à modèle utilisateur)
Et mon modèle utilisateur a quatre champs
- id
- nom
- latitude (latitude)
- lng (longitude)
OK, d'avoir accès à l'information de l'utilisateur à travers des articles que je fais la requête:
@articles = Article.find(:all,:conditions=>"vectors @@ to_tsquery('büch')",:joins=>" INNER JOIN users ON users.id = articles.user_id",:include=>:user,:origin=>"Augustusplatz,8,leipzig,germany")
cela fonctionne. Mais quand je veux ajouter un: order => 'ASC distance' il échoue parce que l'ordre par requête utilise un champs Article.lat, et Article.lng pour calculer la distance, mais ces champs lat et lng, sont des membres de l'objet Utilisateur et pas membre de l'article.
BTW si je reçois la requête générée par les rails et je change la clause order by où utilise articles.lat/lng à users.lat/lng cela fonctionne.