【发布时间】:2012-04-08 22:39:24
【问题描述】:
所以我有两个这样的模型
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) 无法找到所有有子级的ModelParents。
我做错了什么?
更新:
回答我自己的问题。我仍然不确定为什么 :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
【问题讨论】:
标签: ruby-on-rails mongoid has-one