2010-04-09 2 views
0

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

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

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

+1

В указанном примере, было бы проще получить только разблокировал комментарии из базы данных? Если это было сделано, не было бы необходимости проверять заблокированные пользователи в представлении. – Armand

ответ

1

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

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

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

0

Это, вероятно, можно сделать так:

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

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

0

Возможно, плагин Hibernate Filter может вам помочь?

+0

Этот плагин был бы идеальным, если бы он работал :) – RyanLynch

+0

Вы используете WebFlow? В настоящее время есть предупреждение об этом. Я использую плагин, и для меня он работает как шарм. – wwwclaes

Смежные вопросы