Как установить ограничения для сгенерированного идентификатора в Grails - PullRequest
0 голосов
/ 20 февраля 2012

У меня есть таблица пользователей, и я хочу использовать имя пользователя (которое является адресом электронной почты) в качестве поля идентификатора, поэтому я использую для этого сгенерированное отображение: "assign". Я также добавил ограничение для поля username в быть подтвержден как адрес электронной почты, но это не применяется. Вот мой класс пользователя:

class User {

transient springSecurityService

String username
String password
String firstName
String lastName

static hasMany = [accounts: Account]
static hasOne = [company:Company]
static belongsTo = Company

static constraints = {
    username blank: false, unique: true, email: true
    password blank: false
    accounts nullable:true
}   

static mapping = {
    password column: '`password`'
    id generator:'assigned', name:'username', property:'username'
}

По сути, я пытаюсь использовать электронную почту пользователя в качестве поля идентификатора и использовать его в качестве внешнего ключа в его отношениях с другими объектами (в качестве отношения «один ко многим», который пользователь имеет с учетной записью), но когда я попробуйте вручную добавить имя пользователя в dbconsole, это позволит мне добавить любую строку.

Как мне применить ограничение электронной почты?

Ответы [ 2 ]

0 голосов
/ 20 февраля 2012

Необходимо помнить, что ограничения и рамки валидации используются перед попыткой вставки в базу данных с использованием GORM.Если вы используете dbconsole напрямую, вы вставляете напрямую в базу данных и пропускаете структуру проверки.

Если вам нужно подтвердить адрес электронной почты в базе данных, возможно, вы можете определить ПЕРЕД ВСТАВКОЙ В ТРИГГЕР в своей таблице.Но это будет зависеть от базы данных.

0 голосов
/ 20 февраля 2012

Ограничение будет проверяться только при попытке save() объекта, поэтому нет оснований полагать, что что-то не так, если вы только выполняете:

someUser.username = 'notAnEmailAddress'

Чтобы проверить, работает ли ограничение, добавьте следующие строки

if (someUser.save()) {
  println 'error: constraints not working'

} else {
  println 'success: save failed because of errors $user.errors'
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...