2010-04-09 33 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