Grails: Как определить свойство домена, отображаемое в представлениях, но не сохраненное?

У меня есть классы этого домена, скажем:

class Person {
  String name
  Integer age
  //car data that needs to be shown and filled in views 
  //but not persisted in Person class
  String model
  String color

  static afterInsert = {
    def car = new Car(model: model, color: color)
    car.save()
  }
}

class Car {
  String model
  String color  
}

Что мне нужно, это показать в моем Person Просмотры (create а также edit) свойства модели и цвета, которые определены внутри Person класс, но это не должно быть сохранено с этим классом. Эти данные, model а также colorдолжны быть сохранены с помощью Car класс домена, возможно, с использованием afterInsert событие. Другими словами, мне нужно сохранить данные из класса домена, используя представления из другого класса домена.

Заранее спасибо.

1 ответ

Вы можете использовать переходные процессы в свойствах, которые GORM игнорирует, например

class Person {

  static transients = ['model', 'color']

  String name
  Integer age
  //car data that needs to be shown and filled in views 
  //but not persisted in Person class
  String model
  String color
  ..
}

Просто любопытно, но есть ли причина, по которой вы не используете ассоциации

class Person {
  ..
  static hasMany = [cars: Car]
}

class Car {
  ..
  static belongsTo = [Person] 
  static hasMany = [drivers: Person]
}

.. или композиция

class Person {
  Car car
}

или просто привязка данных с несколькими доменами

//params passed to controller
/personCarController/save?person.name=John&age=30&car.model=honda&car.color=red

//in your controller
def person = new Person(params.person)
def car = new Car(params.car)
Другие вопросы по тегам