Grails Scaffolding - определить возможные значения для этого свойства класса домена

Я новичок в Grails. У меня есть класс домена Person как:

class Person {
    String firstName
    String lastName
    String gender
    Date dateOfBirth
}

И мне интересно, могу ли я определить возможные значения для свойства - скажем, пол как {M, F, U}, чтобы эти три значения были перечислены в комбинированном окне при использовании динамического скаффолдинга для контроллера Person.

Здесь я просто хотел узнать, есть ли такая функция в рамках Grails? Если такая функция существует, то как я могу ее использовать?

2 ответа

Решение

Из документации http://grails.org/doc/latest/guide/scaffolding.html вы сможете использовать ограничение inList:

class Person {
    String firstName
    String lastName
    String gender
    Date dateOfBirth

    def constraints = {
        gender( inList: ["M", "F", "U"])
    }
}

Это должно создать список выбора для поля пола, в зависимости от версии Grails, которую вы используете. 2.0+ определенно делает это.

Вот альтернативное решение

class Person {
    String firstName
    String lastName
    enum Gender {
        M(1),
        F(2),
        U(3)
        private Gender(int val) { this.id = val }
        final int id
    }
    Gender gender = Gender.U
    Date dateOfBirth

    def constraints = {
        gender()
    }
}

Это будет хранить пол в базе данных как целое число (1,2,3) и по умолчанию пол будет равным U. Преимущество здесь в том, что вы можете переименовывать значения F, M и U без обработки переноса данных.

Другие вопросы по тегам