在Mongoid has_many关系中查询父对象

时间:2014-04-16 15:43:33

标签: mongoid has-many

我有两个对象

class User
  ...
  has_many :roles
end

class Role
  ...
  belongs_to :user
end

我可以毫无问题地为用户分配角色。但是,我希望能够查询具有特定角色的所有用户。这应该非常简单。但是,我似乎无法获得结果。

我认为这样的事情应该有效:

role = Role.first
u = User.first
u.roles << role
u.save
User.in(role_ids: role._id)

然而,它什么都不返回。该角色已成功分配给用户,但我无法确定如何查询具有特定角色的所有用户。我知道它必须简单,但我正在疯狂地试图找出它。

2 个答案:

答案 0 :(得分:0)

没关系。我应该使用has_and_belongs_to_many而不是&#34; has_many&#34;和&#34; belongs_to&#34;因为许多用户可以共享一个角色。事实上,这是一个非常简单的解决方案,我只是错了。一旦我将关系改为has_and_belongs_to_many,我就可以说&#34; role.users&#34;获取具有该角色的所有用户的列表。

答案 1 :(得分:0)

你需要使用&#34;多对多关系&#34;在&#34;用户&#34;之间和&#34;角色&#34;。

class User
  include Mongoid::Document
  has_and_belongs_to_many :roles
end

class Role
  include Mongoid::Document
  has_and_belongs_to_many :users
end

然后你可以使用&#34; role.users&#34;获取用户列表。如果您有任何疑问,可以阅读mongoid文档: http://mongoid.org/en/mongoid/docs/relations.html#has_and_belongs_to_many