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

EnrollmentInformationtype_oneフィールドの値が trueであるすべてのユーザーを検索したいと思います。

これについていくつかのバリエーションを試しましたが、成功しませんでした。このクエリを作成する方法を知っている人はいますか?

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

編集:

更新されたクエリ

4

2 に答える 2

1

この状況では、関係を設定するのではなく、User 内に EnrollmentInformation ドキュメントを埋め込むことを検討します。とにかく has_one 関係なので特に。そうすれば、次のようなことができます:

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

1 つのドキュメントを埋め込むためのドキュメントは次のとおりです: http://mongoid.org/en/mongoid/docs/relations.html#embeds_one

補足として、含めると、関連するドキュメントも取得していることを意味します。Identity Map を有効にしている場合は、そこにもキャッシュされます。where 句は User オブジェクトの属性に対してのみ機能するため、embedded を使用すると、埋め込まれた属性にアクセスできます。

于 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 に答える