基于父模型中的过滤器检索新的mongoid标准

时间:2017-10-06 16:42:13

标签: ruby-on-rails ruby mongoid

我有一个产品has_many文章的架构 我正在根据我在文章模型上创建的范围检索mongoid标准:

criteria = Article.published.with_image

根据这个标准,我现在想要找到他们的产品具有某个subject_id(或subject_id的子集)的所有文章。 我试着写:

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

其中data [:subjects]是一个subject_id数组,但这并不起作用。

有没有一种干净的方法可以使用mongoid执行此操作而无需遍历第一个条件中的所有文章或从第一个条件中提取所有product_ids?

1 个答案:

答案 0 :(得分: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)  }