Groovy в списке Grails - не работает? - PullRequest
0 голосов
/ 18 ноября 2009

Удаление элемента из списка не работает, что не имеет никакого смысла. Мне не хватает какой-то особой семантики, свойственной работе со списком объектов домена Grails?

В контроллере:

def userCreate = {
    def workgroupInstance = new Workgroup()
    workgroupInstance.manager = authUserDomain
    flash.message = User.list().toString()
    def usersWithoutThisOne = User.list() - authUserDomain
    flash.message = flash.message + "removed ${authUserDomain}, new list is ${usersWithoutThisOne}"
    return ['workgroupInstance':workgroupInstance, 'users':usersWithoutThisOne]
}

Результаты отображаются на flash.message

[буги, toogie, choogie, cookie] удалены буги, новый список [буги, toogie, choogie, cookie]

Ответы [ 3 ]

4 голосов
/ 18 ноября 2009

Откуда берется authUserDomain?

Если вы не реализовали customn .equals () для пользователя (на основе имени пользователя или другого идентифицированного идентификатора), то это может быть не тот объект, который возвращается через User.list (). Элемент будет удален только в том случае, если он соответствует существующему объекту, используя .equals ()

2 голосов
/ 19 ноября 2009

Если вы намерены навсегда удалить пользователя из рабочей группы, то вам нужно использовать функцию grails removeFrom , чтобы избавиться от классов, которые хранятся в множестве ассоциаций.

0 голосов
/ 18 ноября 2009

Я не уверен в этом. У меня сейчас нет переводчика Groovy. Но IIRC и, как предполагает эта статья , - в списках, как ожидается, будет работать с двумя списками, т.е.

list - other

на самом деле больше похоже на

list.removeAll(other)

(в терминах Java), а не предполагаемый

list.remove(other)

Вы можете попробовать

modifiedList = originalList - [elementToRemove]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...