我正在一个社交网站上,用户可以阻止其他用户。在整个站点-数十个地点中,都会显示用户信息。例如,用户评论,回复表单,在线用户列表等。问题在于,鉴于显示用户信息的场所过多,每次检查该用户是否被阻止都变得非常困难。例如:
<g:each var="comment" in="${comments}">
<g:if test="!${loggedInUser.blockedUsers.find { it == comment.user}">
show comment
</g:if>
</g:each>
Grails是否提供任何有助于创建某种过滤器或拦截器的功能,使我在迭代列表等时可以简单地排除被阻止的用户?如果没有,您会建议我做什么?
最佳答案
一个好的经验法则是仅加载所需的内容,因此您的服务方法应在数据库级别过滤掉被阻止的用户。这样,您的 Controller 将变得更加简单, View 仅需显示给出的内容。
但是,如果您更喜欢拦截器,请在此处查看:
http://www.grails.org/Controllers+-+Interceptors
关于grails - 在Grails中创建阻止的用户拦截器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2606696/