路由多个用户角色

时间:2014-01-24 03:55:01

标签: ruby-on-rails ruby ruby-on-rails-4

我有一个区分为6个角色的用户模型,我定义了不同的变量并将它们指向不同的视图文件(类似的格式,但是不同的信息表),但是在同一个控制器操作中,因为它们都有类似的页面“概述”,“个人资料”,“消息”等。

现在控制器非常混乱,并且有多个if / else语句。我相信我应该更改路由,以便每个用户都有自己的控制器,从而消除了当前入侵控制器的if / else怪物的使用。

def index
  if current_user.admin?
    ....
  end
  if current_user.moderator?
   ....
  end
end

问题:如何执行路由以使url成为 www.website.com/1/schedule,其中1 = current_user.id,同时从不同的控制器呈现不同的视图文件?

我正在考虑使用AdminController和ModeratorController来处理这个问题,但我不确定如何进行路由,或者确实这是最好的方法。提前感谢您的建议!

2 个答案:

答案 0 :(得分:0)

我认为你这样做是错误的,如果你有不同角色的类似页面,那么我认为你正在访问相同的模型来处理不同的角色。

如果是这种情况,那么你应该使用像Cancan这样的Gem(Ruby on Rails的授权库)。

答案 1 :(得分:0)

为了解决您的第二个问题,我认为这不是最好的方法。试试这个 - 将你的逻辑从多个控制器移开,并将逻辑保留在ApplicationController中。我不认为你应该将不同的角色分为控制器。相反,请查看您的用户模型并添加一个方法来检查不同用户的权限级别。您可以在用户模型中创建可以在控制器中调用的方法,以查看是否允许用户访问操作。这里会推荐before_action

如果你决定保留多个控制器,我推荐一个类似于权威的宝石。使跟踪不同权限变得更加容易,甚至跨越不同的控制器 - 我认为路由也是如此:https://github.com/nathanl/authority

相关问题