我们如何在ROR中创建角色下拉列表

时间:2013-10-04 11:31:37

标签: ruby-on-rails arrays cancan roles

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

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

我需要一个包含开发人员和测试人员的选择框,并尝试使用以下代码创建一个数组,但是null项目正在进入下拉列表。

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

请帮忙

2 个答案:

答案 0 :(得分:1)

roles = User::Roles.dup
roles.delete :super_admin
roles.delete :admin

roles数组将包含除super_admin和admin

之外的所有角色

[编辑]

实际上我认为这种方式更好

ADMIN_ROLES = [:admin, :super_admin]

roles = User::Roles.select {|r| !ADMIN_ROLES.include? r}

答案 1 :(得分:1)

快速单行:

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