具有多种角色的最佳方法康康舞

时间:2011-06-19 20:43:33

标签: ruby-on-rails cancan

在我们最新的rails3项目中寻找有关使用cancan的一般建议和提示。

我们正在构建一个内部使用的订购系统,并提供受限制的客户端访问权限。其中包括:

Superadmin
Superaccounts
Supertechs 
Clientadmin
Clientaccounts
Clienttechs

在我们的观点中,我们之前使用了以下组合:

  

<%if if can can? :管理用户%>

并且

  

<%if current_user.role_ids.include?(2)%>

我怀疑后者是不好的做法,并希望了解如何最好地实现相同的方法。

我们对如何处理许多角色感到有点困惑。

提供多个用户组访问权限的最佳方式是什么 - 即superadmin和supertechs?

1 个答案:

答案 0 :(得分:0)

我认为替换

的最佳选择
<% if current_user.role_ids.include?(2) %>

是为模型中的每个角色创建一个方法,例如:

class Company < ActiveRecord::Base
  .
  . 
  def super_admin?
    self.role_ids.include?(2)
  end
  .
  .

通过这种方式,您将从视图中删除查询逻辑并将其保留在控制器上,您还可以通过以下方式访问角色:

<% if current_user.super_admin? %>

希望有所帮助:)