2012-03-29 3 views
0

こんにちは私はGrailsでアプリケーションをやっています。 請求書を管理するアプリケーションです。 各請求書には製品のリストがあります。 それぞれの製品は、特性の異なる3つのタイプのいずれかになります。 だから、私は今、私はビューのGSPポイントでそれを管理する方法については考えているGORMの継承とGSP

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 
} 

でモデルをやりました。

Grayscはクラスカラムを使用して継承を管理していることがわかります。このクラス入力を管理する必要がある場合は、製品を追加するフォームを作成するときに、このような

何か:

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

私はGrailsのとかなり新しいよ、私は春の知っているし、また、それを私はそれを管理する方法についてのアイデアを持っていない、すべての提案が良いです。 多くのありがとうございます。

答えて

0

本商品は請求書に属する必要はありません。一方的な方法は、InvoiceからProductへの関係が十分です。また、Productクラスのクラスモデルを拡張する基本クラスは必要ありません。あなたのProductクラスに

String productType
を追加し、多分INLIST制約を追加することができます。

static constraints = { 
    productType(inList: ['A','B','C']) 
} 

あなたはあなたの製品の種類とするとき、あなたのフォームは、製品名で提出を定義するg.select、およびタイプを持つことができますバインドするか、新しいドメインオブジェクトを作成して保存する必要があります。

new Product(params).save() 
+0

問題は、異なる商品タイプのために、私は異なるフィールドと価格を計算する別の方法があるということです。これらのフィールドすべてで1つの大きなクラスを作成する必要がありますか? – rascio

+0

ProductクラスのString productTypeの代わりに、ProductType productTypeを使用できます。このようにProductTypeというクラスがあり、List フィールドまたはList フィールドを持つことができます – chethan