2016-09-01 8 views
1

既存のエンティティの投稿フィールドが一意であるかどうかを確認する必要があります。バリデーターを使用したいと思います。私はこのようにそれをやろうとしている:Play Frameworkデータベースをチェックする必要があるJson検証

val slugUnique: Reads[String] = 
    Reads.StringReads.filter(ValidationError("not_unique"))(str => 
     Entity.find(str).isEmpty 
    ) 

が、私は他のレコードではなく、現在をチェックするために、この方法には、現在のエンティティのIDを渡す必要があります。これは可能ですか?それとも別のやり方でやるべき?

+0

は、なぜあなたはそれ 'def'作成し、IDを渡さない、このようなもの、あなたが明示的に機能を読み込む渡す必要があり、コントローラからそれを呼び出すには? –

+0

素晴らしいアイデア。コントローラのアクションからこのdefを使用するにはどうすればよいですか? – user2975535

答えて

0

slugUniqeをdefを使用して関数にする必要があります。パラメータを持つことができます。そうして

def slugUnique(id: Long): Reads[String] = 
    Reads.StringReads.filter(ValidationError("not_unique"))(str => 
     Entity.find(str).isEmpty 
    ) 

request.body.validate[String](slugUnique(id))

関連する問題