index unique DataMapper multi-champ
-
21-09-2019 - |
Question
Dans DataMapper, comment pourrait-on préciser la combinaison de deux champs doit être unique. Par exemple, les catégories doivent avoir des noms uniques dans un domaine:
class Category
include DataMapper.resource
property :name, String, :index=>true #must be unique for a given domain
belongs_to :domain
end
La solution
Avez-vous essayé de définir les propriétés que les clés? Pas sûr que je l'ai essayé, mais cette façon ils devraient devenir une clé composite.
property :name, String, :key => true
property :category, Integer, :key => true
Autres conseils
Vous devez créer un index unique pour les deux propriétés:
class Category
include DataMapper::Resource
property :name, String, :unique_index => :u
property :domain_id, Integer, :unique_index => :u
belongs_to :domain
end
En fait, John, la réponse de Joschi est correcte: l'utilisation des nommés: valeurs unique_index ne crée un index à colonnes multiples; il est important de lire la partie droite de ces hachage roquettes (à savoir, si elle venait d'être true
, vous auriez raison).
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow