Создание заблокированного пользовательского перехватчика в Grails - PullRequest
0 голосов
/ 09 апреля 2010

Я работаю над социальным сайтом, где пользователи могут блокировать других пользователей. По всему сайту - десятки мест, отображается информация о пользователях. Например, комментарии пользователей, формы ответов, онлайн-список пользователей и т. Д. И т. Д. Проблема в том, что, учитывая большое количество мест, где отображается информация о пользователях, становится очень трудно каждый раз проверять, заблокирован ли этот пользователь. Например:

<g:each var="comment" in="${comments}">
  <g:if test="!${loggedInUser.blockedUsers.find { it == comment.user}">
     show comment
  </g:if>
</g:each>

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

Ответы [ 3 ]

1 голос
/ 10 апреля 2010

Хорошее практическое правило - загружать только то, что вам нужно, поэтому ваш метод обслуживания должен отфильтровывать заблокированных пользователей на уровне базы данных. Тогда ваши контроллеры будут проще, а представления будут отображать только то, что им дано.

Но если вы предпочитаете перехватчики, посмотрите здесь:

http://www.grails.org/Controllers+-+Interceptors

0 голосов
/ 09 апреля 2010

Может быть, плагин Hibernate Filter может вам помочь?

0 голосов
/ 09 апреля 2010

Возможно, это можно сделать так:

<g:each var="comment" in="${comments.findAll { !(it in loggedInUsers.blockedUsers) }}">
    show comment
</g:each>

Но я думаю, что было бы более эффективно фильтровать ваши комментарии в контроллере. Возможно, вы могли бы сделать критерии Grails на ваших комментариях.

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