簡體   English   中英

Ruby on Rails CanCan,允許用戶在注冊時選擇角色

[英]Ruby on Rails CanCan, allow users to choose roles on signup

我對它的工作方式有些困惑。 我一直在關注一些教程,而我所困的是如何知道注冊的哪個用戶具有某些權限?

例如,我希望用戶在兩個不同的角色之間進行選擇:

注冊屏幕上的公司或居民

我是否應該在控制台中將這些角色名稱添加到“角色”表中? 還是有更簡單的方法將這兩種不同的角色類型添加到我的數據庫中?

我已經添加了

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

但我認為沒有任何反應。 我假設是因為我的數據庫中沒有特定的角色名稱,所以沒有顯示。

控制台是僅添加角色的最佳方法嗎? 還是我可以采用另一種方法,以便將來可以輕松地操縱事物?

謝謝!

我想到了三種可能的做法:

  1. 創建一個管理界面以使管理員角色可以通過MVC添加其他角色
  2. 如前所述,通過控制台添加新角色
  3. 播種數據庫

如果管理員可以訪問Rails控制台(並假設他們知道如何使用它),那么除非您已經將其他管理功能集成到了MVC中, 否則選項1似乎是過大的選擇。

就個人而言,我會選擇最后一個選項。 這與通過控制台進行添加一樣容易,但是提供了實際提交代碼更改歷史記錄的額外好處。

播種數據庫的名義上最簡單的方法是使用seeds.rb 在其中,您可以編寫所需的任何命令,以在初始種子或后續種子中正確地播種數據庫:

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

然后,從命令行運行rake db:seed seed.rb所有語句seed.rb順序運行。 如果存在任何錯誤(或其他問題,例如重復的記錄),ActiveRecord將相應地對其進行處理(即,您無需擔心無提示故障)。

需要注意的是,那里有多個播種庫,它們可能會促進播種過程。 我沒有親自使用過它,但是Seedbank的工作流程似乎很有意義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM