Как ссылаться на неявные параметры в закрытии где

Как я могу использовать неявный параметр внутри where закрытие?

Я не особенно горжусь своим текущим решением проблемы:

def index() {
    def params = params                 // <-- UGLY HACK
    respond Project.where {
        if (params.sender) {
            sender.id == params.sender  // <-- OTHERWISE THIS WOULD FAIL
        }
    }
}

Также я заметил, что могу параметризовать запрос, поместив общий код Groovy в замыкание, такой как if выше. Странно, params внутри условно не доставляло никаких хлопот даже без взлома. Это нормально или не рекомендуется?

1 ответ

Ну, вы можете получить sender первый:

def thesender = Sender.get(params.sender)

Затем передайте это в качестве критерия вашему where закрытие:

Project.where { sender == thesender }

Вы получаете что-то вроде этого:

def index() {
    def thesender = Sender.get(params.sender)

    respond Project.where { sender == thesender }
}
Другие вопросы по тегам