檢索

2017-10-06 61 views
0

我有一個架構基於過濾器在父模型新mongoid標準,其中產品的has_many文章 我取回我的文章模型創建基於示波器一個mongoid標準:檢索

criteria = Article.published.with_image 

從這個標準,我現在想要查找其產品具有特定subject_id(或subject_id的子集)的所有文章。 我試圖被軟件寫:

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

其中數據[:主體]是subject_ids的數組,但這不工作。

有沒有一種乾淨的方式來做到這一點與mongoid,而不必從第一條標準循環所有文章或從第一個標準採摘所有product_ids?

回答

1

這些怎麼樣?

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) }