Как сослаться на свойство из другого класса Домена в пользовательском валидаторе Grails? - PullRequest
2 голосов
/ 04 января 2012

Мне сейчас трудно строить свои ограничения, у меня есть 3 класса предметной области, а именно: Больница, Доктор и Пациент , где Больница и Доктор имеет отношение 1: m, а Доктор и Пациент также имеет отношение 1: m.Поэтому меня попросили создать фиктивные данные, в которых мне нужно было создать 2 разные больницы с врачами и пациентами.Вот мой код для класса домена Больница .

class Hospital {
String name
String location

static transients = ['patients']

static hasMany = [doctor: Doctor, patient: Patient]
static constraints = {

    name(blank:false)
    location(blank:false)
    doctor(nullable:false)

}  }

-> и вот мой код для класса домена Доктор .

class Doctor {

String name
String specialization

static hasMany = [patient: Patient]
static belongsTo = [hospital: Hospital]

static constraints = {

    name(blank:false)
    specialization(blank:false)
    patient(nullable:true)
    hospital(nullable:false)
} }

-> и для Пациента класса домена

class Patient {
String name
String ailment
int age
Date dateAdmit, dateDischarge

static belongsTo = [doctor: Doctor, hospital: Hospital]

static constraints = {

    name(blank:false, maxSize:100)
    ailment(blank:false)
    age(size:1..200)
    dateAdmit(nullable:true)
    dateDischarge(nullable:true)
    doctor(nullable:false)
    hospital(nullable:false)
}}

-> Я спас 2 больницы, а именно hospitalA и больница B с врачами и пациентами, моя проблема в том, что мне нужно убедиться, что врач из больницыB не может иметь пациента из больницыA иливрач и пациент должны находиться в одной больнице.Я считаю, что мне нужно сделать это с помощью пользовательского валидатора.но я не знаю, как, так как я должен сравнивать свойства из разных доменных calsses.пожалуйста, помогите мне ...

1 Ответ

2 голосов
/ 04 января 2012

Это должно сработать:

    doctor(nullable:false, validator: { d, inst ->
        return d.hospital == inst.hospital; 
    })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...