次のFoo
オブジェクトがあるとします。
Foo foo = new Foo(foo: "foo", bar: "bar", baz: "baz")
特定の制約を検証する方法を知っています:
foo.validate(["foo", "bar"]) // validates the "foo" property and the "bar" property, but not the "baz" property
また、検証をすべて一緒に放棄する方法も知っています。
foo.save(validate: false)
しかし、リスト内のものを除くすべての制約を検証するように Grails に指示する方法がわかりません。やりたいことを実行するメソッドを作成できましたが、最初にそれを行うための Groovy の方法がないことを確認したかったのです。
アップデート
「グルーヴィーな」方法がない場合、これを行う方法を次に示します。
// This method exists in my Util.groovy class in my src/groovy folder
static def validateWithBlacklistAndSave(def obj, def blacklist = null) {
def propertiesToValidate = obj.domainClass.constraints.keySet().collectMany{ !blacklist?.contains(it)? [it] : [] }
if(obj.validate(propertiesToValidate)) {
obj.save(flush: true, validate: false)
}
obj
}