2016-08-10 1 views
1

Ich habe zwei Sammlungen in meinem mongoDB von meinem Ruby on Rails Projekt, Eins mit Bewegungen und ein anderes mit Schauspielern. Die Bewegungen haben einen Attribut-Akteur, der den Namen des Schauspielers enthält und durch den Sie ihn finden können. Ich weiß, ich will alle Bewegungen finden, die zu einem Schauspieler eines bestimmten Geschlechts gehören. Der Code, den ich verwende, ist der folgende.falsche Anzahl von Argumenten (0 für 1) MongoDB Suche in Schienen

found = Motion.all 
found.each do |x| 
    n = x.actor 
    a = actors.where(:name => n).first 
    if a.gender != search_gender 
     found = found.where.not(:name => n) 
    end 
    end 

Aber ich bekomme immer die Fehler

wrong number of arguments (0 for 1) 

es angenommen hat, in dieser Linie sein:

found = found.where.not(:name => n) 

aber ich weiß nicht wirklich, was ich hier falsch gemacht haben. Kann mir jemand etwas sagen oder kennt jemand eine andere Art, wie ich das machen könnte? Ich kenne mich mit Schienen nicht aus, also könnte es ein ziemlich dummer Fehler sein. jede Hilfe wird geschätzt.

+0

Können Sie relevante Modellverknüpfungen teilen? und teilen Sie uns auch mit, wo genau Sie diesen Code geschrieben haben? –

Antwort

2

Es ist, weil die where Methode mindestens ein Argument benötigt, aber Sie nichts übergeben.

Hier können Sie not_in Abfrage verwenden:

found = found.not_in(:name => n) 

Diese stack overflow question könnte Ihnen helfen.

Verwandte Themen