0
私は、コントローラのメソッドは次のように見えるサービスメソッドを呼び出しますgrailsで削除機能を実装する正しい方法は?
コントローラメソッド
def deletemap(Long id){
try {
mapService.deleteMap(id)
}
catch (ValidationException e) {
flash.message = "Sorry an error occured when deleting map!!"
redirect(action: "maps", id: event.id)
return
}
flash.message = "Map was deleted!!"
redirect(action: "maps", id: event.id)
return
}
ようになり、削除する方法があります。
サービスメソッド
def deleteMap(id){
def map = Map.get(id)
if(map == null){
throw new org.springframework.security.access.AccessDeniedException("Id doesn't exist!!!")
return
}
map.delete(flush: true)
}
を
この機能を可能な限り完璧に実装することが目標です。私は現在、いくつかのテストを書いており、map.delete(flush:true)が失敗したときにテストのケースを処理する必要があるかどうか疑問に思っています。このゴームコールが失敗した場合はありますか?私は助けていただきありがとうございます!ありがとう!
サービスメソッドで削除が失敗した場合も対応してはいけません。つまり、このコードがmap.delete(flush:true)に失敗した場合や例外をスローした場合あなたのソリューションは、削除が成功した場合のみケースを処理します。私が間違っている場合は私を修正してください。ありがとう! – kofhearts
データベース接続が失われた場合にtry/catchを追加することはできますが、その場合、アプリが完全にダウンする可能性があります。私の答えは、2つのケースがあります:インスタンスが見つからず、インスタンスが別の関係で使用されています。 – rvargas
私はフラッシュが必須ではないと仮定します。 delete()も目的を満たしますか? – kofhearts