0

如何在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里面的条件并没有造成任何麻烦,即使没有破解。这种做法可以还是不鼓励?

4

1 回答 1

0

那么你可以得到第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 }
}
于 2014-09-18T20:07:15.503 回答