2008-08-28 63 views
2

我正在使用Ruby on Rails作爲內部站點。該網站的不同用戶可以訪問各種各樣的數據和完全不同的數據視角。在這些不同類別的用戶中,需要有一定的訪問級別。在訪問級別內,我需要能夠添加來自其他類用戶的功能。如何編程用戶首選項

在發佈的「版本1.0」的Intranet網站中,我實現了一般用戶類。我現在需要對用戶訪問進行更精細的控制。

問題是怎麼回事?

對於用戶首選項(顯示地圖(或不顯示地圖),而不是此功能)的普遍接受的做法是什麼,而不會爆炸數據庫架構,並使用<%填充視圖代碼if feature_allowed% >標籤無處不在。

回答

3

另一種完全不同的方法是使用acts_as_authenticated和授權的插件。這些表格將由插件構建(即用戶,角色角色_users)。從DOC:

授權插件提供以下內容:

  • 使用#permit和#permit在任類或實例方法 級別檢查授權的一個簡單的方法?

  • 使用角色對整個應用程序,模型類或模型實例(即特定對象)進行授權。

  • 一些類似英語的動態方法利用定義的角色。您將會是 能夠使用像「user.is_fan_of angelina」或「angelina.has_fans?」, 這樣的方法,其中'粉絲'僅在角色表中定義。

  • 爲您所需的數據庫複雜程度選擇一個mixin。對於 的所有功能,你將要使用「對象角色表」(見下文)

2

填充視圖代碼<%,如果 feature_allowed%>標籤隨處可見。

我不認爲你想這樣做。假設所提出的替代方案都不可行,至少您應該考慮將這些檢查轉移到您的控制器中,在那裏您可以將它們重構爲before_filter。

請參閱第11.3節「使用Rails進行敏捷Web開發」(第158頁,在我的第二版中),他們正是這樣做的。