Как я могу отфильтровать список в Grails, чтобы отобразить только то, что принадлежит конкретному пользователю? - PullRequest
1 голос
/ 15 июля 2011

Я думаю, что ответ довольно простой, но я совсем новичок в Grails и изо всех сил пытаюсь найти ответ на мой вопрос где-нибудь еще.

По сути, у меня есть два класса домена: пользователи и события. События имеют отношение «отношение к пользователю» с пользователем, а пользователь имеет отношение «hasMany» к событиям. Приложение требует, чтобы пользователь вошел в систему. После входа в систему он может просматривать список созданных событий, однако этот список содержит все созданные события; даже те, которые созданы другими пользователями. Как я могу отфильтровать список, чтобы показать только то, что создал вошедший в систему пользователь? Я не хочу, чтобы один пользователь мог получать доступ и изменять события, созданные другим.

Ответы [ 2 ]

1 голос
/ 15 июля 2011

Ответ Этана верен и прост в исполнении. Но если у вас есть много разных мест, в которых вам нужна фильтрация, тогда вы рискуете забыть сделать фильтр.

Вы можете использовать плагин hibernate filter для автоматической фильтрации всех данных. См. http://trac.serveall.net/web/ibidem для примера, где я фильтрую данные по компании текущего пользователя.

0 голосов
/ 15 июля 2011

Если на вашем контроллере есть идентификатор пользователя, вошедшего в систему, вы можете сделать

user = User.get(id)
def events = user.events

и передайте это на ваш взгляд:

redirect(controller: 'event', action: 'list', userEvents:events)

...