quindi ho una due modelli come questoIn Rails, usando Mongoid, come faccio a trovare tutti i modelli con un riferimento has_one valido (non nullo)?
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
Supponendo che ho un'istanza persistente di ModelParent chiamato mp nella console rotaie
mc = mp.create_model_child(:name=>"child")
e quindi fare
mp.model_child
restituisce un oggetto valido
tuttavia se lo cerco come questo:
ModelParent.where(:model_child.ne => nil).length
restituisce 0
Ho cercato di creare model_child e poi assegnarla, utilizzando anche build_model_child(), e ogni metodo mostra model_child è chiaramente nel genitore, tuttavia la query per non nullo (.ne) non riesce a trovare tutti i ModelParents con figli.
Cosa sto sbagliando?
Aggiornamento:
Rispondere alla mia domanda. Sono ancora incerto perché il: model_child.ne => nil non funziona, però ...
ho risolto il problema codificando qualcosa di simile:
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
Grazie mille, che funziona un piacere! – KDKotU