2011-11-27 74 views
0

在這裏稍微再討論一下結構性問題。多用戶類型rails應用程序的控制器方案

我有一個rails應用程序,有三種不同類型的用戶;那些查看內容的人,製作內容的人和管理員。將會有內容和統計數據以及對於每種類型的用戶以不同的形式可用,例如,觀衆不能編輯新聞帖子,但生產者或管理員可以等等等

我想要決定如何構造控制器。我收到了關於在查看器控制器中執行新聞操作,生成器控制器中的新聞操作和管理控制器中的新聞操作的建議,所有這些都執行登錄的用戶類型的相應功能。我正在嘗試這種方法現在,但似乎令人難以置信的混亂。這是否是最好的方法,或者我應該把它作爲新聞對象的控制器,這種類型的數據的控制器等等,而是將用戶引導到每個控制器內根據他們的會話適當的行爲?

由於我目前的方法(控制器每用戶類型的方法)似乎失控,我對此感到非常困惑。任何意見是極大的讚賞。

回答

0

完全取決於。如果只是類型的取決於用戶類型,那麼在新聞模型中有範圍(或lambda範圍)來檢索正確的新聞。它也可以是用戶模型的一部分,因此has_many關係知道要檢索的項目類型。

如果前端功能是不同的,那麼你會希望呈現一個不同的部分,或者將它們截然分開,或者使用類似細胞具有特定類型的組件,或...

1

我目前正在爲不同類型的用戶使用不同控制器的項目(類似於您的方法),我有'管理員/ news_controller','producer/news_controller'和'查看者/ news_controller'。公共控制器(controllers/viewers中的公共控制器)只有showindex動作,而admins/news_controller繼承自「公共」,並添加了new, create, edit, update etc.和身份驗證。但是,這種體系結構是由需求決定的,可能不是最適合您的解決方案。

另一種方法是有一個新聞控制器,一個色器件的用戶模型,三種角色「管理員」,「生產者」和「觀衆」,並與從瑞安貝茨慘慘寶石news資源管理權限。你可以在這裏找到它:https://github.com/ryanb/cancan。 Ryan在CanCan上還有一個Railcast:http://railscasts.com/episodes/192-authorization-with-cancan

希望它有幫助。

相關問題