新しい Project インスタンスを作成しようとしています (コードは以下に示されています) が、プロジェクトは名前を表示する代わりに ID を生成するため、制約により作成できません。たとえば、'On target'(name) の代わりに '3'('On target' name の ID) を取得します。私の同僚は、id に基づいて属性の実際の名前を返すサービスを作成し、ProjectController からそのサービスを呼び出すように私に言いました。私は groovy と grails の構文にあまり詳しくないので、その方法がわかりません。
name 属性を持つ Stage ドメイン クラスがあります。Bootstrap で、ステージにさまざまな名前をロードしました。
if (Stage.count() == 0) {
new Stage(name: "").save()
new Stage(name: "Not Started").save()
new Stage(name: "On target").save()
new Stage(name: "Off target").save()
new Stage(name: "Late").save()
new Stage(name: "Critically Late").save()
new Stage(name: "Complete").save()
}
Stage 属性を持つ Project クラスもあり、これらのステージにいくつかの制約を適用しました。
class Project {
String name
Date dueDate
Date startDate
Stage requirements
Stage design
Stage development
Stage qa
Stage ua
Stage delivery
Date deliveryDue
static constraints = {
name blank: false, unique: true
dueDate min: new Date() - 1, max: new Date() + 365 * 10
startDate min: new Date() - 1, max: new Date() + 365 * 10
requirements inList: ["Not started", "Critically Late", "Off Target Date", "On target"]
design inList: ["Not started", "Critically Late", "Off Target Date", "On target"]
development inList: ["Not started", "Critically Late", "Off Target Date", "On target"]
qa inList: ["Not started", "Critically Late", "Off Target Date", "On target"]
ua inList: ["Not started", "Critically Late", "Off Target Date", "On target"]
delivery inList: ["Not started", "Critically Late", "Off Target Date", "On target"]
}
}