2012-04-14 12 views
1

Hallo Ich habe Dokumente eingebettet, aber ich kann sie nicht durch ID abfragen. Ich kann alles mit inspect ausgeben und es gibt die richtigen IDs, aber Abfragen ist nicht möglich. Ich habe ein Kursmodell, das embeds_many: course_members und CourseMember Modell mit embedded_in: Natürlich: inverse_of =>: course_membersMongoid eingebettete Abfrage

habe ich versucht, dies ohne Erfolg:

puts Course.where("course_members.id" => params[:id]) 

Mit diesem Code i das erreichen kann Richtiges Dokument:

c = Course.where("course_members.accepted" => 2).all 
c.each do |l| 
l.course_members.each do |f| 
    puts f.inspect 
end 
end 

Aber wie kann ich meine Daten mit einer Mongoid-Abfrage erhalten?

Antwort

6

I

erraten
puts Course.where("course_members._id" => BSON::ObjectId(params[:id])) 

Die reale ID Argument in MongoDB ist _id, die Funktion .id in mongoid ist nur eine bequeme Wrapper.

Bearbeiten: Sie müssen auch Ihre Zeichenfolge params[:id] in eine korrekte BSON ID konvertieren.

+0

Kurs.where ("Kurs_Members._ID" => BSON :: ObjectId.from_string (Parameter [: ID])) – user934801

Verwandte Themen