así que tengo un dos modelos de este tipoEn Rails, usando Mongoid, ¿cómo puedo encontrar todos los modelos con una referencia válida (no nula) has_one?
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
Suponiendo que tengo una instancia PERSISTED de ModelParent llama mdp en la consola rieles
mc = mp.create_model_child(:name=>"child")
y luego hacer
mp.model_child
vuelve un objeto válido
sin embargo si lo busco como esto:
ModelParent.where(:model_child.ne => nil).length
devuelve 0
He intentado crear model_child y después asignarlo, utilizando también build_model_child(), y cada método muestra model_child es claramente en la matriz, sin embargo la consulta para no nula (.ne) no puede encontrar todos los ModelParents con hijos.
¿Qué estoy haciendo mal?
Actualización:
responder a mi propia pregunta. Todavía estoy seguro de por qué el: model_child.ne => nil no está funcionando, sin embargo ...
He resuelto el problema mediante la codificación de algo como esto:
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
Muchas gracias, eso funciona una delicia! – KDKotU