Was Sie sehen, ist aufgrund der Definition von Assoziationen und der zugrunde liegenden Abfrage, die mit der "in"-Klausel übereinstimmt, genau richtig. Denken Sie noch einmal an "in" als "in der Menge" von distinct Objekte http://en.wikipedia.org/wiki/Set_(Mathematik) Der Abruf für die Benutzerliste hat eine zugrunde liegende Abfrage der Benutzersammlung mit einer $in-Klausel, siehe http://docs.mongodb.org/manual/reference/operator/query/in/
Für die Assoziation @task.userlist erhalten Sie nur die Dokumente in der User-Sammlung, die mit der $in-Klausel übereinstimmen, die User-Sammlung ist das primäre „Subjekt“. Es gibt einen signifikanten semantischen Unterschied zu
User.where(:user_id.in => self.user_id)
gegenüber
self.user_id.collect |user_id| do User.where(:user_id => user_id).first; end
Um "Duplikate" aus der vorherigen Abfrage zu erhalten, müssten Sie im Ernst doppelte Dokumente in der Benutzersammlung haben.;-)
Ich hoffe, dass dies zu Ihrem Verständnis beiträgt.