2009-08-12 8 views
1

J'ai une application qui stocke les documents créés par les utilisateurs. Ces documents ont des auteurs, des dates de création. Les auteurs peuvent avoir des rôles. En outre, un document donné peut être étiqueté avec des mots-clés. Il y a ~ 16K documents dans la base de données, et un utilisateur peut vouloir voir les documents avec une combinaison de ces informations comme une limite. Par exemple, voir tous les documents d'un auteur donné, ou publiés dans une fenêtre temporelle donnée, ou d'auteurs dans ce rôle, etc (et toute combinaison de ceux-ci).Meilleure façon de gérer plusieurs conditions de requêtes possibles sur une page d'index

Existe-t-il une meilleure méthode recommandée pour implémenter cela? En général, j'ai passé les conditions désirées dans le hachage des params puis j'ai utilisé un compliqué if ... elsif .... sinon .. pour décoder les conditions passées directement dans différents appels Model.find. Sinon, j'utiliserai une séquence similaire pour construire la phrase SQL appropriée, puis utiliser un seul appel find.

Ces deux aspects semblent être des hacks et il devrait y avoir une meilleure façon de le faire avec des étendues nommées, mais je ne peux pas trouver une manière propre de gérer les permutations.

Répondre

0

Vous avez seulement besoin d'avoir une ligne de code avec Model.find. Au lieu d'utiliser la logique conditionnelle pour créer plusieurs appels find, utilisez la logique conditionnelle pour remplir le hachage :conditions qui est transmis à l'appel find.

Questions connexes