Also habe ich zwei Modelle wie dieses
%Vor%Angenommen, ich habe eine persistente Instanz von ModelParent namens mp in der rails-Konsole
%Vor%und dann
%Vor%gibt ein gültiges Objekt zurück
Wenn ich jedoch so danach suche:
%Vor%gibt 0 zurück
Ich habe versucht, model_child zu erstellen und dann zuzuweisen, auch mit build_model_child (), und jede Methode zeigt model_child ist eindeutig im Eltern, aber die Abfrage für nicht nil (.ne) findet nicht alle ModelParents mit Kindern.
Was mache ich falsch?
Aktualisierung:
Beantworte meine eigene Frage. Ich bin mir immer noch nicht sicher warum: model_child.ne = & gt; nil funktioniert jedoch nicht ...
Ich habe das Problem gelöst, indem ich etwas so codiert habe:
%Vor% Es funktioniert nicht, da der Fremdschlüssel auf der Seite der Beziehung gespeichert ist. Also, in Ihrem Fall wird ModelChild
collection ein Feld model_parent_id
haben und nicht umgekehrt. Ich nehme an, Sie haben das schon herausgefunden, aber anstatt es so zu lösen, wie Sie es getan haben, würde ich vorschlagen, dass Sie die Assoziationen has_one
und belongs_to
umschalten und dann:
Ich würde mich nicht auf die .ne in solchen Fällen verlassen, fand ich, dass .ne Methode nicht immer gut funktioniert: Versuchen Sie beispielsweise, eine Zeichenfolge mit dem Namen "false" einzufügen, und suchen Sie danach mit .ne; -)
Ich fand heraus, dass für solche Fälle der beste Weg, die richtigen Modelle zuverlässig zu finden, die Filterung nach nativem Mongo $type
Unter der Liste der bekannten Typen wurde das Finden von fehlerhaften Feldern viel effizienter gefunden
Ich habe einen anderen Weg gefunden, aber ich weiß nicht, ob es effizienter oder weniger ist: Sie können die Zurückweisungsmethode verwenden. Zum Beispiel:
%Vor%Tags und Links mongoid ruby-on-rails has-one