私はGrailsにコードを持っています:
def product = Product.get(5) ?: new Product()
product.isDiscounted = product.isDiscounted ?: true
問題は、isDiscounted
プロパティが既存の製品に既に設定されていて、それが false の場合、最終的に true に変更してしまうことです。オブジェクトが一時的かどうかを確認することはできますか?
この場合、 のBoolean
代わりにプロパティを作成するboolean
と、初期値は になりnull
、デフォルトにはなりませんfalse
。false
デフォルト値を許可するだけでなく、 の選択が意図的なものであることを確認できるため、これも検証に役立ちます。
一般的には、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)