我正在使用Devise並對使用Pundit感興趣,但無法找到很多關於它應該與Rolify集成還是獨立使用的問題。 CanCanCan與Rolify很好地合作,我喜歡角色模型。我是否錯過了一個主要原因,爲什麼Pundit和Rolify似乎並沒有被一起使用?爲什麼Pundit不像CanCanCan那樣與Rolify結合?
8
A
回答
35
爲什麼不一起使用它們?他們可以在一個時尚很容易地使用這樣
class OrganisationPolicy
def initialize(user, organisation)
@user = user
@organisation = organisation
end
def index?
@user.has_role? :admin
end
def show?
@user.has_role?(:admin) || @user.organisation == @organisation
end
end
事實上,rolify
和pundit
不連接的東西是一件好事,而不是設計的失敗;)
1
我最近在使用devise時使用了Rails 4的Pundit gem.Pundit是獨立系統,根據我的經驗,它不依賴於Rolify。
除了使用Rolify之外,我還創建了遷移以在現有的devise user表中添加角色,這可以幫助您爲用戶分配角色並檢查他們擁有哪些角色。
請看一看,我爲我的項目創建的模式:凡is_admin
和is_daily_user
欄供用戶角色添加
create_table "users", force: true do |t|
t.string "email", default: "", null: false
t.string "encrypted_password", default: "", null: false
t.string "reset_password_token"
t.datetime "reset_password_sent_at"
t.datetime "remember_created_at"
t.integer "sign_in_count", default: 0, null: false
t.datetime "current_sign_in_at"
t.datetime "last_sign_in_at"
t.string "current_sign_in_ip"
t.string "last_sign_in_ip"
t.datetime "created_at"
t.datetime "updated_at"
**t.boolean "is_admin"
t.boolean "is_daily_user"
。
希望這會有所幫助!
+2
這將工作,但它不可擴展。想象一下你想添加一個is_premium用戶。你將不得不改變你的數據庫模型。創建一個你自己的模型UserRole(:id,:role_name)belongs_to用戶,你可以爲每個用戶創建儘可能多的角色名稱......儘管我使用了Rolify gem;) – luigi7up 2016-10-21 08:47:23
相關問題
- 1. Rails Rolify with Pundit
- 2. 爲什麼Google集合不像Apache集合那樣支持MultiKeyMap?
- 3. Pundit vs Rolify兩層角色
- 4. 爲什麼CSS圖像不像HTML圖像那樣行爲
- 5. 爲什麼Graphics :: DrawImage不像預期那樣拉伸圖像?
- 6. 爲什麼Julia不像Python那樣以縮進爲基礎?
- 7. 爲什麼這個Ruby'if'不像預期的那樣行爲?
- 8. PHP - 爲什麼count()不像strlen()那樣工作?
- 9. 爲什麼Ansible不能像sudo用戶那樣運行Pip?
- 10. 爲什麼HorizontalContentAlignment不像WPF中那樣在Silverlight中工作?
- 11. 爲什麼railo不像cfmx 6.1那樣讀取customtag路徑?
- 12. 爲什麼GetHashCode不是像.NET中的HashCode那樣的屬性
- 13. 爲什麼Java不像C++那樣有初始化器列表?
- 14. 爲什麼4B5B不像I2C,SPI那樣使用?
- 15. 爲什麼匿名類型不像ExpandoObject那樣動態?
- 16. 爲什麼WCF不像ASMX那樣工作?
- 17. $ watch爲什麼不能像我期望的那樣工作 - Angular
- 18. 爲什麼is-operator不能像==那樣工作?
- 19. 爲什麼Overflow屬性不像我預期的那樣工作?
- 20. 爲什麼sqlsrv_connect不像以前那樣工作?
- 21. MSBuild爲什麼不像我期望的那樣複製
- 22. 爲什麼formset不像Django中的表單那樣提供值?
- 23. 爲什麼R不像預期的那樣削減工作?
- 24. 爲什麼Django的__regex不能像我想的那樣工作?
- 25. 爲什麼dropna()不能像我期望的那樣工作?
- 26. 爲什麼這個mod_rewrite規則不像記錄那樣工作?
- 27. 爲什麼這個複選框不會像Meteor那樣刷新?
- 28. 爲什麼psycopg2不能像'\ x00'那樣插入字符串?
- 29. 爲什麼Hive不像MySQL那樣有FIELDS ENCLOSED BY?
- 30. 爲什麼==運算符不像char數組那樣工作?
權威人士會工作得很好用Rolify ,或任何其他角色系統。 – sevenseacat 2014-10-06 04:38:08
@sevenseacat這也是一個正確的答案 – MicFin 2014-10-06 04:54:15