2

次のようなドメイン 3 ドメイン クラスがあります。

Tasks.groovy

class Tasks {
    static belongsTo = [ user : User ]
        //other fields
    Date startDate
    Date endDate
}

ユーザー.groovy

class User {
    //relationships. . . .
    static belongsTo = [ company : Company, role : Role, resource : Resource]
    static hasMany = [ holidays : Holiday, tasks : Tasks]
    //other fields
    }

Holiday.groovy

class Holiday {
    static belongsTo = User
    Date startDate
    Date endDate
    //other fields
}

インスタンスを作成するときに、 and が の and内に収まらないTasksように制約を設定したいと考えています。ある場合はスローしてエラーになります。Tasks startDateendDateUserHolidaystartDateendDate

この制約をドメイン クラス自体 (つまりTasks) に設定する方法が必要です。

そうすることは可能ですか?

前もって感謝します。

4

2 に答える 2

2

これは、カスタムバリデーターを使用して実行できます。

startDate(validator: {val, obj->
    obj.user.holidays.every{holiday-> val <= holiday.startDate || val >= holiday.endDate }
})

カスタム検証ロジックをクロージャーとしてカプセル化できます。endDateにも同様のロジックを追加する必要があります。

于 2012-02-24T10:37:18.030 に答える
0

createTaskTask はこれまでに削除された変数 (self -> User -> Holiday -> startDate) をいじるべきではないため、User ドメインに関数を配置します。

ユーザーが休日の開始日と終了日を知っていることは明らかであり、新しいタスクの開始日と終了日を簡単に検証できます。

于 2012-02-24T06:17:05.403 に答える