dans Datamapper, comment spécifier-on la combinaison de deux champs doit être unique. Par exemple, les catégories doivent avoir des noms uniques dans un domaine:
3 Réponses :
Avez-vous essayé de définir les deux propriétés comme des clés? Je ne sais pas que je l'ai essayé mais de cette façon, ils devraient devenir une clé composite.
property :name, String, :key => true property :category, Integer, :key => true
En fait, il y a déjà une clé, je ne l'ai tout simplement pas inclus dans l'extrait de code.
Vous devez créer un index unique pour les deux propriétés:
Ceci est incorrect car il sera nécessaire que le nom et le domaine soient uniques dans la table. Ce que j'ai demandé, c'est comment faire l'ensemble (: nom ,: domain) unique.
En effet, bien que le symbole : u code> aurait pu être plus clair - par exemple
: index_on_name_and_domain_id code> - il est réellement correct. Voir les indices de section sur la page de documentation de la propriété Datamapper: rubydoc.info/github / Datamapper / DM-Core / Master / Datamapper / ... . Les déclarations créent un index unique composite multi-colonnes.
En réalité, John, Joschi, la réponse est correcte: l'utilisation de nommé: les valeurs uniques_index créent un index de plusieurs colonnes; Il est important de lire le côté droit de ces fusées de hachage (c'est-à-dire si cela venait d'être vrai code>, vous auriez raison). P>
Je me suis éloigné de Datamapper pour que cela ait peut-être changé, mais à l'époque, j'ai écrit le commentaire, c'était correct.
Quelque part où j'ai vu mentionné que les clés nommées vont se grouper comme ça. Ie: unique_index =>: nom pour le nom et le domaine.