2011-07-27 178 views
1

使用devise,我有一個用戶模型。我沒有用戶控制器。CanCan +爲設計用戶模型設計

要使用慘慘我需要在我的控制器

​​

我在哪裏添加此上方做(下),所以我可以有用戶權限模型給出我沒有用戶控制器?

感謝

回答

7

您可以在代碼添加到您需要驗證任何控制器,你並不需要一個UsersController

before_filter :authenticate_user! 

這一行需要與色器件簽訂一個有效的用戶,因此,如果您嘗試與此的before_filter訪問控制器沒有被記錄,你會用色器件被重定向到sign_in_path

load_and_authorize_resource # CanCan 

這一行將填充實例變量爲默認值(如果尚未設置),然後使用Ability類檢查您的權限,因此假設您有一個ArticleController它將在幕後執行以下操作(實際代碼基於當前動作)

# for the show action 
@article = Article.find(params[:id]) 
raise CanCan::AccessDenied unless can(:read, @article) 

can(:read, @article)語句是慘慘圖書館的壁爐,它會返回基於你的能力類的布爾值。可以閱讀更多關於它here

如果你的整個應用程序要求身份驗證可以在before_filter :authenticate_user!線只需添加到ApplicationController

+0

正確的,但我在哪裏可以設置用戶可以使用慘慘不是密碼修改有信息,但。 – AnApprentice

+0

因爲'load_and_authorize_resource'中定義的默認規則不好。最簡單的方法是使用[ActiveRecord類的attr_accessible或attr_protected宏](http://api.rubyonrails.org/classes/ActiveModel/MassAssignmentSecurity/ClassMethods.html)並使用批量分配更新用戶屬性。不需要CanCan來完成這樣的任務。對於其他使用能力類閱讀[我的上一個鏈接](https://github.com/ryanb/cancan/wiki/Defining-Abilities) – Fabio

+2

您可以創建自定義的能力(例如'can?:edit,:password') CanCan並根據需要在應用程序中檢查它們。 –