У меня есть пользовательский валидатор, например -
validator: { userEmail, userAccount ->
if (userAccount.authenticationChannel == "ABC") {
boolean valid = true;
UserAccount.withNewSession {
if (UserAccount.findByEmail(userEmail)){
valid = false;
}
else if (UserAccount.findByName(userEmail)) {
valid = false;
}
...
Итак, в основном мне нужна некоторая валидация, основанная на каком-то условии, и в моей валидации мне нужно выполнить запрос.
Но теперь, если я это сделаю -
def admin = new UserAccount(firstname:'Admin',email:'admin@example.com')
admin.save(flush:true)
admin.addToAuthorities("ADMIN").save(flush:true)
Это не удастся.
Grails выполняет проверку, даже при обновлении, и поскольку электронная почта существует, проверка не проходит. Чем это отличается, если я делаю
email {unique: true}
Граилс говорит, что я не могу написать собственный валидатор, который проверяет уникальность.