Итак, у меня есть две подобные модели
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
Предполагая, что у меня есть постоянный экземпляр ModelParent с именем mp в консоли rails
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 явно находится в родительском элементе, однако запрос не 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