2011-10-17 12 views
2

私はこれについての答えを見つけようとしているが、ちょっと調べている。答えはカスタム制約かもしれないと思いますが、電子メールまたはクレジットカードの制約をサポートする方法と同様に、GrailsがDate制約の概念をサポートしているかどうかは問いません。Grailsの日付と日付の範囲の制約はありますか?

日付を持つことは非常に便利で、さらに範囲を指定する標準的な方法だと思っていました。

http://grails.org/doc/latest/ref/Constraints/range.html

ありがとうござい中でほのめかしているように見えるが、私は、そのような制約上の任意の情報を見つけるように見えることができないので、私はここに求めています!

+0

この範囲の制約は、日付の範囲ではなく数値の範囲です。 Grailsには何も組み込まれていないので、カスタムバリデーターはおそらく必要なものです。プラグインがあるかもしれませんが、私はそれを知りません。 – Gregg

+0

はい、あなたはカスタムバリデーションのために行く必要があるとも言います。 –

+0

@Gregg - それは[ドキュメントの右側にあります](http://grails.org/doc/latest/ref/Constraints/range.html) ** IntRange、日付、またはComparableを実装し、ナビゲーションのための次と以前のメソッドを提供する任意のオブジェクトを持っています**固定範囲に対して常に検証したい場合は、動作するはずです。もちろん、それはおそらく日付にとってはあまり有用ではありません! – OverZealous

答えて

6
static constraints = { 
    someDate(min: Date.parse('yyyy-MM-dd', '2011-10-10'), 
      max: Date.parse('yyyy-MM-dd', '2012-10-10'))  
} 
+0

ここに1つあります...これらの日付は、検証が実行されるたびに評価されません。起動時または最初の起動時に評価されます。したがって、 'someDate(min:newDate、max:new Date()+ 10)'のようなものは、アプリが10日間実行された後に問題になり始める。この状況に陥ると、カスタムバリデーターで問題を修正できます。 – proflux

+0

@profluxこの問題を避けるために例を変更しました。ありがとうございました –

+0

@ Donald Date.parse()を静的コンテキストで評価すると、この問題は解決しないと思います。そのため、私はprofluxのコメントが有効であり、カスタムバリデーターが必要だと思います。 Grailsがmin:とmax:への引数としてクロージャを与えることを可能にするならば、それは賢明かもしれません。そうすれば実行時に評価することができます。 – sbglasius

関連する問題