如何在子记录中选择具有特定条件的父记录?

时间:2012-08-18 09:25:37

标签: ruby-on-rails ruby-on-rails-3 mongodb mongoid has-many-polymorphs

我正在使用Rails 3和MongoDB(mongoid适配器)构建应用程序。   我很难在子记录中找到具有特定条件的父记录。

class Food
  include Mongoid::Document
  has_many :subscriptions, as: :subscribable
end

class Subscription
 include Mongoid::Document
 field :subscriber_id
 belongs_to :subscribable, polymorphic: true
 belongs_to :subscriber
end

我想选择特定用户尚未订阅的食物。

这是我的查询不起作用。

Food.not_in('subscriptions.subscriber_id' => [User.first.id])

但它会归还所有食物。   我的查询出了什么问题?

感谢任何帮助。

由于

1 个答案:

答案 0 :(得分:0)

此类查询在Mongoid中不起作用。以下查询需要连接两个集合,但MongoDB没有加入的概念。因此,当您查询时,您只能使用您正在查询的集合中的文档字段 - 在这种情况下,它是foods集合(最有可能)。

如果您不想根据订阅查询食物,我建议您在食物中嵌入Subscription。如上所述here