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 без обработки переноса данных.