8
votes

Datamapper Multi-Field Index unique

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: xxx


1 commentaires

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.


3 Réponses :


1
votes

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


1 commentaires

En fait, il y a déjà une clé, je ne l'ai tout simplement pas inclus dans l'extrait de code.



16
votes

Vous devez créer un index unique pour les deux propriétés: xxx


2 commentaires

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 aurait pu être plus clair - par exemple : index_on_name_and_domain_id - 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.



2
votes

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 , vous auriez raison).


1 commentaires

Je me suis éloigné de Datamapper pour que cela ait peut-être changé, mais à l'époque, j'ai écrit le commentaire, c'était correct.