2012-08-13 46 views
2

我正在使用devise-cancan-rolify安裝程序來處理用戶。在註冊時,他們將收到Reader角色。我希望能夠從管理界面將它們提升爲Writer角色。問題在於,角色和users_roles表的設置方式使其變得相當複雜,特別是因爲沒有users_roles模型,而且我非常業餘。有沒有人可以在這裏指導我正確的方式?使用cancan和rolify進行角色管理

+0

如果我沒有理解你想要的問題,當用戶以管理員身份登錄他/她應該有管理員(作家)的能力,你是否有任何用戶表相同? – AnkitG 2012-08-13 03:49:28

回答

18

我希望你看到this tutorial關於devise + cancan + rolify的設置。

如果您確實按照以下步驟操作,那麼您應該擁有用戶,角色和users_roles表。你不需要users_roles模型。

您需要做的第一件事是確保您可以分配和檢查用戶的角色。

你應該能夠繼續之前運行這些代碼(從文檔的使用部分,嘗試這些在控制檯上的任何用戶)

user.add_role "admin" 
user.has_role? :admin 

如果這是爲你工作,現在你需要分配讀者角色對於新用戶來說,要做到這一點最好的地方,是after_create回調:

class User 
    after_create :assign_reader_role 
private 
    def assign_reader_role 
    self.add_role "reader" 
    end 
end 

下一步是創建添加/管理界面刪除作家的角色。

只需在您的UsersController添加兩個動作

def assign_writer_role 
    @user = User.find(params[:id]) 
    @user.add_role "writer" 
    redirect_to @user 
end 

def remove_writer_role 
    @user = User.find(params[:id]) 
    @user.remove_role "writer" 
    redirect_to @user 
end 

多數民衆贊成。

我希望這可以幫助。