Пользовательская проверка Grails - Запрос внутри проверки проверки - Что происходит при обновлении?

У меня есть пользовательский валидатор, например -

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}

Граилс говорит, что я не могу написать собственный валидатор, который проверяет уникальность.

5
задан Burt Beckwith 10 August 2010 в 12:46
поделиться