3

私はGrailsにコードを持っています:

def product = Product.get(5) ?: new Product()
product.isDiscounted = product.isDiscounted ?: true

問題は、isDiscountedプロパティが既存の製品に既に設定されていて、それが false の場合、最終的に true に変更してしまうことです。オブジェクトが一時的かどうかを確認することはできますか?

4

1 に答える 1

5

この場合、 のBoolean代わりにプロパティを作成するbooleanと、初期値は になりnull、デフォルトにはなりませんfalsefalseデフォルト値を許可するだけでなく、 の選択が意図的なものであることを確認できるため、これも検証に役立ちます。

一般的には、isAttached()メソッド (またはプロパティ スタイル バリアントattached) を使用できますが、たとえば

def product = Product.get(5) ?: new Product()
product.isDiscounted = product.attached ? product.isDiscounted ? true

このケースは、コンストラクターのデフォルト値を使用して、実際にはさらにコンパクトに実行できます。

def product = Product.get(5) ?: new Product(discounted: true)
于 2012-05-17T18:57:55.467 に答える