2011-04-23 44 views
0

任何人都可以指向我的文檔嗎?定義對設計用戶模型的基於角色的訪問

我在Rails3應用程序中使用Devise + CanCan,並設置了Ability.rb。

我想根據用戶的角色限制對編輯/刪除用戶路徑的訪問。通常Ability.rb會是這樣的:

def initialize(user)   
    if user.role? :moderator 
     can :manage, User 
    end 
end 

但在意見我使用了編輯設計註冊路徑/刪除:

<% if can? :update, @user %> 
    <%= link_to 'Edit', edit_user_registration_path(@user) %> | 
<% end %> 

「可以:管理用戶」不似乎適用於這些路徑,並且無論角色如何,它們都保持隱藏狀態。

如果我使用「can:manage,:all」,則主持人用戶可以訪問這些路徑。

因此,「用戶」顯然不是正確的管理模式。我嘗試過「設計」和「註冊」,無濟於事。

我應該使用什麼值 - 「can:manage,????」 - 我在哪裏可以找到解釋原因的文檔?

謝謝你的指點!

回答

3

您面臨的問題,我在上一個項目中遇到過。
此鏈接將爲您提供所有答案。

Rails-authentication-with-devise-and-cancan-restful-resources-for-administrators

希望它能幫助。

+0

@jatin感謝您獲取有用信息的鏈接。現在只有當用戶的角色具有編輯功能時纔會顯示鏈接。但是,這隻發生在全球範圍內。即。版主可以編輯/銷燬所有用戶,用戶不能編輯/銷燬任何用戶。登錄的用戶應該能夠使用上面使用的條件語句編輯/更新自己,對嗎? – 2011-04-26 03:11:52

+0

@安迪:是的,沒錯。但是在爲用戶記下能力時要小心,他不能編輯/更新他/她的角色,但可以改變其他事情。 – 2011-04-26 07:31:25

+0

@賈丁感謝您的提示。在這種情況下應該不是問題,因爲角色是通過單獨的模型處理的。我還沒有選擇你的答案,儘管它已經到了一半,因爲我仍然試圖找到一個解決方案來顯示編輯鏈接,只有登錄用戶在索引視圖中。應該是比較直接的,只需要找到時間考慮它,並在這裏包括完整的答案。 – 2011-04-26 12:35:00