2010-04-09 34 views
0

我正在使用社交网站,用户可以阻止其他用户。在整个网站 - 几十个地方,显示用户信息。例如,用户评论,回复表单,在线用户列表等等。问题是,由于显示用户信息的地方数量多,因此每次检查用户是否被阻止都变得非常困难。例如:在Grails中创建阻止的用户拦截器

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

确实Grails的规定,将有利于建立某种过滤或截击,其中迭代名单的时候,等我可以简单地排除阻塞用户的任何功能?如果不是,你会建议我做什么?

+1

在提供的例子,这将是简单的检索只能从数据库畅通的意见吗?如果这样做了,则不需要在视图中检查被阻止的用户。 – Armand 2010-04-09 11:04:32

回答

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 2010-04-09 13:30:47

+0

你使用WebFlow?目前有一个警告。我正在使用插件,对我来说它就像一个魅力。 – wwwclaes 2010-04-10 17:02:43