检索

2017-10-06 62 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) }