经过一周的搜索和尝试,我必须带着问题来到这里。
我有一个遗留系统,我需要使用grails建模 scaffolding 。系统按以下方式收集报告信息:
|customer_id|Question_1 |Question_2|...|Question_N|
|123 |A |Z |...|D |
|456 |B |X |...|E |
问题的答案集是:
Question 1: A,B,C
Question 2: Z,X,Y
Question N: D,E,F
N在许多这种表格中超过100 。
我知道我可以通过以下方式对表进行建模(不介意语法)
class InformationTable {
Int customerId
String question1
String question2
.
.
String questionN
static constraints = {
question1 inList: ['A','B','C']
question2 inList: ['Z','X','Y']
.
.
questionN inList: ['D','E','F']
}
}
或部分使用脚手架,通过自定义验证器限制可能的结果。脚手架在答案的选择框中显示所有选项,但只允许保存自己类型的答案:
class InformationTable {
Int customerId
Answer answer1
Answer answer2
.
.
answer answerN
// again, don't mind about the syntax
// I wrote this out of memory and will
// check the syntax in the evening
static constraints = {
answer1 validator: { val, obj ->
obj.answer1.type == 'question1'
}
answer2 validator: { val, obj ->
obj.answer2.type == 'question2'
}
.
.
answerN validator: { val, obj ->
obj.answerN.type == 'questionN'
}
}
}
class Answer {
String name
String type
}
|type |name|
|question1|A |
|question1|B |
|question1|C |
|question2|Z |
|question2|X |
|question2|Y |
|question3|D |
|question3|E |
|question3|F |
第一个选项(inList)是一种使用脚手架执行此操作的方法,但它需要大量工作,我不喜欢这些答案选项不在数据库中。
第二种方式看起来很有希望,但我不知道如何限制脚手架打印的打印答案,以便例如answer1只打印脚手架保险箱的有效选项('A','B','C')
有没有人知道使用脚手架更好的方法?