2012-05-31 34 views
0

是否有任何簡單的角色教程?我發現Devise是很好的&授權的簡單解決方案。然後,當涉及到Cancan with Rolify時,對於像我這樣的初學者來說,這會產生混亂。瞭解Rolify 3.2中的角色

目前我定義角色在ability.rb

if user.has_role? :admin 
    can :manage, :all 
else 
    can :read, :all 
end 

,然後在控制器中,我檢查就像這個例子:

def destroy 
ability = Ability.new(current_user) 
if ability.can? :delete, :all then 
    @post = Post.find(params[:id]) 
    @post.destroy 
end 

respond_to do |format| 
    ... 
end 

我的問題是 - 我有一個奇怪的感覺,如果能力檢查? :刪除,:在這個例子中,所有都是多餘的。那麼我的代碼是否正常,或者我真的搞錯了?謝謝

回答

1

這將是更有意義的,檢查他們是否可以刪除有問題的帖子。管理員可以刪除任何內容,但普通用戶只能刪除他們擁有的內容。

@post = Post.find(params[:id]) 
authorize! :delete, @post 

我還建議你花一些時間閱讀康康的文檔,因爲你的代碼並不真正匹配。

+0

感謝您的指導。 – valk

+0

@DVG但是valk如何將Canify與Rolify整合? – JJD

0

我想你「消滅」的方法可以像:

def destroy 
@post = Post.find(params[:id]) 
if can? :delete, @post then 
    @post.destroy 
end 

respond_to do |format| 
    ... 
end 

因爲在cancan的DOC:

當前用戶的權限,然後可以使用可以檢查?和 不能?視圖和控制器中的方法。