Nous avons tout placé dans une seule table LookUp dans la base de données, avec une colonne mappée à une énumération décrivant la recherche pour laquelle elle était destinée (titre, pays, etc.).
Cela nous a permis d'ajouter la flexibilité d'une option «Autre, veuillez spécifier» dans les listes déroulantes de recherche. Nous avons fait un contrôle qui encapsulé ceci, avec une propriété pour activer ou désactiver ce comportement au cas par cas.
Si l'utilisateur final a sélectionné "Autre, veuillez spécifier", une zone de texte apparaît pour lui permettre d'entrer sa propre valeur. Cela serait ajouté à la table de recherche, mais signalé comme un élément ad hoc.
La table contenait un indicateur indiquant l'état de chaque valeur de recherche: Actif, Inactif, AdHoc. Seuls les actifs apparaîtraient dans la liste déroulante; Les AdHoc étaient ceux créés via l'option "Autre, précisez". Une page d'administration a montré la fréquence d'utilisation des valeurs AdHoc, permettant aux administrateurs du site de promouvoir des valeurs populaires courantes dans l'utilisation générale (c'est-à-dire de changer leur indicateur d'état en actif).
Cela pourrait bien être exagéré pour votre application, mais cela a très bien fonctionné pour la nôtre: l'application était essentiellement presque entièrement des opérations CRUD sur des données très spécifiques à l'entreprise. Nous avons eu des dizaines de recherches sur le site que le client voulait pouvoir gérer lui-même. Cela leur a donné une flexibilité totale sans aucune intervention de notre part.
J'aime vraiment cette idée. Je ne sais pas si je vais aller avec quelque chose d'aussi élaboré, mais certainement bon pour la réflexion. –
Comment vous êtes-vous assuré que vos différentes listes déroulantes étaient pointées vers le bon groupe? Avez-vous codé en dur la clé de groupe dans votre code? –
Nous définirions la propriété chaque fois que nous placerions une instance du contrôle de recherche sur une page. C'est facile à faire de manière déclarative dans asp.net; Je n'ai pas travaillé à Ruby. Le contrôle mourrait horriblement si nous oublions de le définir, donc nous le verrons immédiatement lors du débogage. – teedyay