Grails: заводная подколлекция - PullRequest
2 голосов
/ 05 февраля 2012

Имея следующий класс домена:

class Message{
}

Хотите получать все сообщения с id больше offset:

def offset = params.offset
def messages = Message.list()
def subMessages = messages.findAll({offset, it ->
    it.id > offset
}.curry(offset))

Что не так?


Upd : я понимаю, что Message.list() можно выполнить как Message.list(params), но сейчас это не важно.

1 Ответ

4 голосов
/ 05 февраля 2012

Пример использования карты

def params = [offset: 2]
def messages = [[id: 1], [id: 2], [id: 3], [id: 4], [id: 5]]
def subMessages = messages.findAll({ it.id > params.offset })
assert subMessages == [[id: 3], [id: 4], [id: 5]]

Интеграционный тест с использованием класса домена Grails

(1..5).each { new Message(text: "${it}").save(failOnError: true) }
def params = [offset: "2"]
def offset = Integer.parseInt(params.offset)
def messages = Message.list()
def subMessages = messages.findAll({ it.id > offset })
assert subMessages == Message.findAllByIdGreaterThan(offset)
...