2011-08-20 2 views
0

Je souhaite concevoir un service de recherche qui s'applique à un ensemble multiple de différents paramètres de requête. Il pourrait être appelé avec un seul paramètre, ou avec plus.Mise en œuvre d'un service de recherche multiparamétrique

Le problème est que certains paramètres ne peuvent être utilisés que de manière exclusive ou sont mutuellement exclusifs avec d'autres.

Un autre problème est que certains paramètres sont vraiment requis, tandis que d'autres sont seulement facultatifs. Le moyen le plus simple de résoudre ce problème consiste à impliquer une série d'instructions if dans la méthode de recherche du contrôleur, en vérifiant l'existence de certains paramètres ou ensembles de paramètres et en réagissant de manière correspondante. Venant du monde de Java cependant, on m'a appris à ne pas croire tout ce qui finit dans un tas de déclarations if ou switch. Là-bas, nous avons souvent recours à des usines, à qui nous déléguons la décision de choisir une stratégie de recherche appropriée à partir d'un tas de classes de stratégie. Tout ce qui était nécessaire, était de configurer un mappage correct entre les paramètres de requête et les classes de stratégie.

Je sais aussi que la mentalité de Rails tend à résoudre le problème d'une manière beaucoup moins abstraite et plus professionnelle.

Quelle est la bonne façon de rendre un service complexe de recherche multi-paramètre?

Répondre

0

Rails 2: searchlogic

Rails 3: meta_search

Ensuite, il est aussi facile que Model.search (params [: recherche])

sommeil facile.