2017-10-06 5 views
0

ich ein Schema, in dem Produkt has_many Artikel habe ich ein mongoid Kriterien auf Bereiche basierend bin Abrufen ich auf den Artikel Modell erstellt:neue mongoid Kriterien Suchen auf Filter in Muttermodell basiert

criteria = Article.published.with_image 

Aus diesen Kriterien I möchte jetzt alle Artikel finden, für die ihre Produkte eine bestimmte subject_id (oder eine Teilmenge von subject_ids) haben. Ich versuchte writte:

criteria = criteria.in('product.subject_ids': data[:subjects]) 

wo Daten [: Themen] ein Array von subject_ids ist aber das funktioniert nicht.

Gibt es einen sauberen Weg, dies mit Mongoid zu tun, ohne alle Artikel des ersten Kriteriums durchlaufen zu müssen oder alle product_ids von den ersten Kriterien zu entfernen?

Antwort

1

Wie wäre es mit diesen?

Project.where(:subject_id.in => data[:subject_id], :article_ids.in => criteria.pluck(:id)) 

criteria = Article.eagerload(:products).published.with_image 
criterial.map {|art| return art.product if data[:subjects].any? {|subjects| art.product.subject_ids.include?(id) } 
Verwandte Themen