我正在使用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. 为什么Graphics :: DrawImage不像预期那样拉伸图像?
- 4. 为什么Julia不像Python那样以缩进为基础?
- 5. 为什么这个Ruby'if'不像预期的那样行为?
- 6. 为什么HorizontalContentAlignment不像WPF中那样在Silverlight中工作?
- 7. 为什么我不能像上面那样在WPF
- 8. 为什么OSA_LIBRARY_PATH不能像JXA中记录的那样工作?
- 9. 为什么GetHashCode不是像.NET中的HashCode那样的属性
- 10. 为什么Django的__regex不能像我想的那样工作?
- 11. 为什么Ansible不能像sudo用户那样运行Pip?
- 12. 为什么scanf(“%i”,a)不像0b101那样采用二进制?
- 13. 为什么Overflow属性不像我预期的那样工作?
- 14. 为什么这个mod_rewrite规则不像记录那样工作?
- 15. 为什么railo不像cfmx 6.1那样读取customtag路径?
- 16. 为什么WCF不像ASMX那样工作?
- 17. 为什么这个复选框不会像Meteor那样刷新?
- 18. 为什么Mysql不能像NoSQL那样扩展?
- 19. MSBuild为什么不像我期望的那样复制
- 20. 为什么is-operator不能像==那样工作?
- 21. 为什么Java不像C++那样有初始化器列表?
- 22. 为什么这个SQL返回那样?
- 23. jQuery绑定和getJSON组合不像预期的那样行为
- 24. 为什么这个查询的行为不像我预期的那样?
- 25. 为什么jQuery .index()函数的行为不像我期望的那样?
- 26. 为什么MySQL没有像预期的那样订购?
- 27. 为什么OS X没有像Windows那样的闪烁问题?
- 28. 为什么Apache mod_rewrite没有像预期的那样运行
- 29. 为什么LINQ没有像预期的那样工作?
- 30. 为什么Java有像C#那样多的版本?
权威人士会工作得很好用Rolify ,或任何其他角色系统。 – sevenseacat 2014-10-06 04:38:08
@sevenseacat这也是一个正确的答案 – MicFin 2014-10-06 04:54:15