区分Rails中的用户

时间:2016-01-20 20:01:54

标签: ruby-on-rails-4

我创建了一个博客,遵循Rails入门教程,并希望立即发布。虽然我的访客不应该看到很多动作..

如:

  • 创建文章
  • 编辑文章
  • 删除图片
  • ...

当我浏览Rails路由部分http://guides.rubyonrails.org/routing.html时,我发现我可以为管理员创建路由。但这意味着更改我的代码,或者为具有与Admin不同权限的用户创建代码。

我的问题:

  • 为管理员创建一个特定的路由是什么称为"命名空间" ? (我看到了这个 "命名空间"参考其他一些问题)
  • 我是否需要复制控制器并创建adhoc功能 为管理员? (或者用户的受限功能,因为我当前的代码已经具有所有功能)
  • 在某些方面,一些宝石,如Devise,Pundit,ActiveAdmin会帮助我 在这方面。那些宝石之间有什么区别?

1 个答案:

答案 0 :(得分:1)

据我所知,有些用户不应该看到某些信息,或者他们无法采取某些行动。我建议您为用户创建角色:

user.rb

enum role: [:user, :admin]

而不仅仅是例如:

  = link_to 'EDIT', my_edit_path if current_user.admin?

  = link_to 'EDIT', my_edit_path unless current_user.user?

你可以为行动做同样的事情:

redirect_to :roo_path and return if current_user.user?

MORE ABOUT ENUM IN RAILS

修改

顺便说一句

enum你应该有额外的列,在你的情况下它是role