[英]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 %>
但我認為沒有任何反應。 我假設是因為我的數據庫中沒有特定的角色名稱,所以沒有顯示。
控制台是僅添加角色的最佳方法嗎? 還是我可以采用另一種方法,以便將來可以輕松地操縱事物?
謝謝!
我想到了三種可能的做法:
如果管理員可以訪問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.