ГОРМ наследство и ГСП - PullRequest
       25

ГОРМ наследство и ГСП

0 голосов
/ 29 марта 2012

Привет, я делаю приложение с Grails. Это приложение для управления счетами. Каждый счет имеет список продуктов. Каждый продукт может быть одного из 3 типов с разными свойствами. Итак, я сделал модель с

class Invoice{
     static hasMany = [products: Product]
}

abstract class Product{
    static belongsTo = [invoice: Invoice]
    abstract int getPrice()
}

class ProductA extends Product{
     //implementation of getPrice using its own properties
}

теперь я понятия не имею, как управлять этим с точки зрения ВСП.

Я знаю, что Grails управляет наследованием, используя столбец class , поэтому, когда я пишу форму для добавления продукта, должен ли я управлять также вводом этого класса?

как то так:

 <g:textField name="products[0].class" value="ProductA" />

Я довольно новичок в Grails, я знаю Spring, и, кроме того, я не знаю, как с этим справиться, каждое предложение хорошо. Большое спасибо.

1 Ответ

0 голосов
/ 29 марта 2012

Продукт не должен принадлежать счету.Достаточно односторонних отношений между Счетом и Продуктом.И вам вообще не нужен базовый класс, расширяющий модель класса для вашего класса Product.Вы можете добавить

String productType
к вашему классу Product и, возможно, добавить ограничение inList:
static constraints = {
    productType(inList: ['A','B','C'])
}

. У вас может быть g.select для определения типа вашего продукта и когда ваша форма отправляется вместе с продуктом.имя и тип, вам необходимо связать его или создать новый объект домена и сохранить его.

new Product(params).save()
...