如何使用rails和mongoid查询相关模型

时间:2012-12-03 21:31:18

标签: ruby-on-rails mongoid

我有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的{​​{1}}字段值为真的所有用户。

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

type_one

编辑:

更新了查询

2 个答案:

答案 0 :(得分:1)

在这种情况下,我会考虑在用户中嵌入EnrollmentInformation文档,而不是建立关系。特别是因为它无论如何都是一种无关紧要的关系。这样你可以做类似的事情:

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

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

作为附注,当您包含时,表示您也在提取相关文档。如果您启用了身份映射,它也将缓存在那里。 where子句仅对User对象的属性进行操作,因此,如果使用embedded,则可以访问嵌入的属性。

答案 1 :(得分:1)

如果您可以恢复阵列,这应该可行 -

User.find(EnrollmentInformation.where(:type_one => true).collect{|enrollmentinformation| 
  enrollmentinformation.user_id})