だから私はこのような2つのモデルを持っています
class ModelParent
include Mongoid::Document
field :name, :type => String
has_one :model_child
end
class ModelChild
include Mongoid::Document
field :name, :type => String
belongs_to :model_parent
end
RailsコンソールにmpというModelParentの永続化されたインスタンスがあると仮定します
mc = mp.create_model_child(:name=>"child")
そしてします
mp.model_child
有効なオブジェクトを返します
ただし、次のように検索すると、次のようになります。
ModelParent.where(:model_child.ne => nil).length
0を返します
model_childを作成してから、build_model_child()を使用して割り当てようとしました。各メソッドは、model_childが明らかに親にあることを示していますが、not nil(.ne)のクエリでは、子を持つすべてのModelParentを見つけることができません。
私は何が間違っているのですか?
アップデート:
私自身の質問に答えます。:model_child.ne => nilが機能しない理由はまだわかりませんが、...
私はこのようなものをコーディングすることで問題を解決しました:
def self.with_child
user_ids = ModelChild.all.only(:model_parent_id).map(&:model_parent_id)
return ModelParent.where(:_id.in => user_ids).all
end