【问题标题】:cancan how can we create roles dropdown in RORcancan 我们如何在 ROR 中创建角色下拉列表
【发布时间】:2013-10-04 11:31:37
【问题描述】:

我在我的应用程序中使用 cancan 进行角色管理。我在我的应用中有不同的角色,例如超级管理员、管理员、开发人员、测试人员。如何在不包括超级管理员和管理员的情况下显示角色数组中的角色下拉列表。请看我的代码

class User < ActiveRecord::Base
   Roles = [:super_admin, :admin, :developer, :tester]
end

我需要一个包含开发人员和测试人员的选择框,并尝试使用以下代码创建一个数组,但下拉列表中出现了空项。

User::Roles.map{|r| 
  next if %w(super_admin admin).include?(r.to_s)
  r.to_s.humanize
}

请帮忙

【问题讨论】:

    标签: ruby-on-rails arrays cancan roles


    【解决方案1】:

    快速单行:

    (User::Roles - [:super_admin, :admin]).map { |r| r.to_s.humanize }
    

    【讨论】:

    • 我不认为你的第一个 sn-p 会工作,如果你在地图块中调用 next,你会在结果数组中得到一个 nil
    • @Slicepan 你是对的。正在使用只有最后两个选项的修改后的数组。错过了compact。无论如何,我更喜欢简单的单线。
    【解决方案2】:
    roles = User::Roles.dup
    roles.delete :super_admin
    roles.delete :admin
    

    角色数组将包含除 super_admin 和 admin 之外的所有角色

    [编辑]

    其实我觉得这样比较好

    ADMIN_ROLES = [:admin, :super_admin]
    
    roles = User::Roles.select {|r| !ADMIN_ROLES.include? r}
    

    【讨论】:

      猜你喜欢
      • 2015-12-09
      • 2018-01-20
      • 2020-03-18
      • 1970-01-01
      • 2015-01-25
      • 1970-01-01
      • 2012-11-02
      • 2015-10-01
      • 1970-01-01
      相关资源
      最近更新 更多