2013-06-30 84 views
0

我對這是如何工作感到困惑。我一直在關注一些教程,而我卡住的是如何知道註冊哪個用戶具有某些權限?Ruby on Rails CanCan,允許用戶在註冊時選擇角色

比如,我喜歡有用戶兩個不同的角色之間進行選擇:一個註冊畫面

企業或居民我應該在我的控制檯這些角色名添加到角色表?還是有更簡單的方法將這兩種不同的角色類型添加到我的數據庫中?

我已經加入

<% for role in Role.find(:all) %> 
    <div> 
     <%= check_box_tag "user[role_ids][]", role.id, @user.roles.include?(role) %> 
     <%= role.name %> 
    </div> 
    <% end %> 

但沒有顯示在我的視野。我假設,因爲我沒有具體的角色名稱在我的數據庫中,它沒有顯示。

控制檯是添加角色的最佳方式嗎?或者還有另一種方法,我可以在未來這樣做,我可以輕鬆地操縱事物?

謝謝!

回答

1

三種的可能性做着浮現在腦海中:

  1. 創建一個管理界面,使管理角色通過控制檯通過MVC
  2. 添加額外的角色添加新角色,正如你所提到
  3. 種子你的數據庫

如果管理員有權訪問Rails控制檯(並假設他們知道如何使用它),選項1似乎是過度殺傷,除非您已將其他管理功能捲入MVC。

就我個人而言,我會選擇最後一個選項。這與通過控制檯添加一樣簡單,但提供了實際提交代碼更改歷史的額外好處。

播種你DB的名義上最簡單的方法是使用seeds.rb。在這裏面,你可以寫上你需要正確的種子無論是初始或後續的種子數據庫命令什麼:

# db/seeds.rb 
cities = Role.create([{ name: 'Business' }, { name: 'Resident' }]) 

然後,在命令行,運行rake db:seed。您的seed.rb中的所有語句將按順序運行。如果有任何錯誤(或其他問題,如重複記錄),ActiveRecord會相應處理它們(即,您不必擔心無聲失敗)。

作爲一個說明,有幾個播種庫可能會促進播種過程。我沒有親自使用它,但Seedbank的工作流程似乎有意義。

+0

完美!這就是我一直在尋找的!謝謝! :) – hellomello

相關問題