Ruby on rails 文档集合Mongoid中的进程哈希
我有一个web应用程序,其中我将用户类型存储为散列字段。我有很多收藏。处理该散列字段的最佳方法是什么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,
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)?