Как мне найти записи по «количеству» ассоциаций с помощью rails и mongoid?

С этими моделями :

class Week
  has_many :proofs
end
class Proof
  belongs_to :week
end

Я хочу сделать что-то вроде:

Week.where(:proof.count.gt => 0)

Чтобы найти только недели, у которых есть несколько доказательств.

Есть один ответ, который, кажется, решает эту проблему:

Можно ли фильтровать области видимости по количеству связанных классов для данного поля

Но в этом примере в Week нет такого атрибута, как proof_ids, поскольку идентификаторы хранятся с доказательствами. Это не работает, например:

Week.where(:proof_ids.gt => 0)

Как возможен этот запрос? Концептуально просто, но я не могу понять, как это сделать с помощью mongo или mongoid.

Точно так же я хотел бы упорядочить по количеству доказательств, например, например:

Week.desc(:proofs.size)

Но это тоже не работает.

Я понимаю, что контр-кеш - это вариант для обоих моих конкретных вопросов, но я также хотел бы иметь возможность выполнить запрос.

Заранее благодарим за любую помощь.

8
задан Community 23 May 2017 в 11:53
поделиться