0

我有一个User带有相关模型的EnrollmentInformation模型:

class User
  include Mongoid::Document
  has_one :enrollment_information
end

class EnrollmentInformation
  include Mongoid::Document
  belongs_to :user
  field :type_one, :type => Boolean  
end

我想找到EnrollmentInformation'type_one字段的值为 true 的所有用户。

我已经尝试了几种变体,但都没有成功。有谁知道我如何进行此查询?

User.includes(:enrollment_information).where(:"enrollment_information.type_one" => true)

编辑:

更新的查询

4

2 回答 2

1

在这种情况下,我会考虑将 EnrollmentInformation 文档嵌入到用户中,而不是建立关系。尤其是因为无论如何它是一个 has_one 关系。这样,您可以执行以下操作:

User.where(:"enrollment_information.type_one" => true)

这是嵌入一个文档的文档:http: //mongoid.org/en/mongoid/docs/relations.html#embeds_one

附带说明一下,当您包含时,这意味着您也在获取相关文档。如果您启用了身份映射,它也将被缓存在那里。where 子句只会对用户对象的属性进行操作,因此,如果您使用嵌入式,您将能够访问嵌入的属性。

于 2012-12-03T21:39:39.603 回答
1

如果您可以恢复数组,这应该可以工作 -

User.find(EnrollmentInformation.where(:type_one => true).collect{|enrollmentinformation| 
  enrollmentinformation.user_id})
于 2015-04-21T02:25:36.233 回答