Comment puis-je fondamentalement effectuer une contrainte unique sur un champ de type de données de chaîne.
class User{
String username
String Email
static hasMany = [roles:Roles]
static constraints = {
Email(email:true)
username(unique:true)
}
}
Existe-t-il un moyen simple de mettre en œuvre username(unique: true)
Ou dois-je vérifier manuellement la base de données à l'aide de méthodes telles que .findByNameLike
?
Le nom d'utilisateur doit être unique, mais l'unicité doit être insensible à la casse.
2 réponses
Afin d'ajouter une autre solution de la solution "rapide et sale" de @air_blob, avez-vous essayé cela ?
username(validator: { val, obj ->
return !User.findByUsernameIlikeAndIdNotEqual(val, obj.id)
})
username(unique:true)
est une contrainte valide.
Pour rendre la contrainte insensible à la casse, vous devrez écrire un validateur personnalisé. Voir ce fil de discussion pour plus d'informations.
Questions connexes
Questions liées
De nouvelles questions
grails
Grails est un framework d'applications Web Open Source, à pile complète, qui utilise le langage de programmation Groovy (qui est à son tour basé sur la machine virtuelle Java (JVM) et Java. Le framework est orienté vers le développement d'applications à haute productivité en suivant le "codage" par convention ", et utilise des technologies Java courantes telles que Hibernate et Spring.