如何使用grails scaffolding对遗留表进行建模

时间:2013-02-01 08:18:35

标签: grails gorm

经过一周的搜索和尝试,我必须带着问题来到这里。

我有一个遗留系统,我需要使用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

我知道我可以通过以下方式对表进行建模(不介意语法)

1。 INLIST

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']
    }
}

或部分使用脚手架,通过自定义验证器限制可能的结果。脚手架在答案的选择框中显示所有选项,但只允许保存自己类型的答案:

2。自定义验证器

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')

有没有人知道使用脚手架更好的方法?

0 个答案:

没有答案