2009-04-29 4 views
3

Quelle est la meilleure pratique où dois-je mettre des requêtes SQL dans Rails?Où dois-je placer des requêtes SQL dans Rails?

  • Dois-je créer les méthodes dans les modèles par exemple: find_all_public_items où j'utilise les méthodes de recherche avec toutes les conditions, puis de les utiliser dans les contrôleurs. Comme ça, j'ai toutes les questions en un seul endroit, mais la flexibilité que chaque requête devrait être exactement adaptée au besoin me manque. Dois-je simplement utiliser find/find_by_sql dans les contrôleurs - comme cela je ne crée pas des milliers de méthodes mais je perds le contrôle sur la façon dont les contrôleurs aspirent les données de la base de données.

Répondre

6

Vous devriez les mettre dans vos modèles. Vous pourriez vouloir étudier named scopes aussi.

+0

Ce mécanisme nommé scopes est plutôt cool: une macro-chose courte et douce pour générer les requêtes données juste un indice sur la clause "where" pour le besoin du jour. Merci. – Roboprog

+1

En outre, j'aime le fait que vous ayez indiqué quelque chose pour le rendre plus facile, plutôt que simplement dire «tu dois» (implicite: même si ça fait mal, etc.) – Roboprog

+0

Les portées nommées sont particulièrement chouettes parce que vous pouvez les enchaîner. – cpm

8

Mettez tout ce qui est lié au modèle dans le modèle. Période.

Questions connexes