Ruby on rails 文档集合Mongoid中的进程哈希

Ruby on rails 文档集合Mongoid中的进程哈希,ruby-on-rails,mongodb,hash,mongoid3,Ruby On Rails,Mongodb,Hash,Mongoid3,我有一个web应用程序,其中我将用户类型存储为散列字段。我有很多收藏。处理该散列字段的最佳方法是什么 class Community include Mongoid::Document class UserRoles Admin = :a Moderator = :m end include Mongoid::Timestamps field :un, as: :username, type: String field :nm, as: :name,

我有一个web应用程序,其中我将用户类型存储为散列字段。我有很多收藏。处理该散列字段的最佳方法是什么

class Community
  include Mongoid::Document

  class UserRoles
    Admin = :a
    Moderator = :m
  end

  include Mongoid::Timestamps

  field :un, as: :username, type: String
  field :nm, as: :name, type: String

  field :suids, as: :special_user_ids, type: Hash
  has_and_belongs_to_many :users
end
现在可以有很多社区,有很多用户,每个用户都有很多版主。所以对于特殊用户,我将其存储为散列

现在我如何计算当前登录的用户是否是任何社区的版主/管理员

我试过这个,但显然不起作用。如果我有一份文件要处理,那就行了。我的解决方案并没有达到为什么首先使用散列的目的

  #  suids = []
  #  @communities = Community.all
  #  suids << @community.special_user_ids.collect { |k, v| k }
  #  //code doesnt find special_user_ids as it has too many documents to deal with.
  #  communities_path(@community.id)

对于所需的社区,请获得管理员,然后您可以执行以下操作

if admins.include?(current_user)
    # treat as admin
end
编辑

all_admins = Array.new
获取所有通信

@communities = Community.all

@communities.each do |c_comm|
   all_admins.concat(User.where(:id.in => c_comm.special_user_ids.collect { |k, v| k }))
end

puts all_admins.include(current_user)?

但我的问题是如何获得所有社区的管理员列表?作为
#@communities=Community.all#suids它可以工作,但是有没有有效的方法来处理散列?
@communities = Community.all

@communities.each do |c_comm|
   all_admins.concat(User.where(:id.in => c_comm.special_user_ids.collect { |k, v| k }))
end

puts all_admins.include(current_user)?