/ / MongoDB / Ruby (Mongoid): як вибрати лише вбудовані документи - ruby, mongodb, mongoid

MongoDB / Ruby (Mongoid): як вибрати тільки вбудовані документи - рубіни, монгоби, монгоди

У мене є колекція користувачів. Кожен користувач має масив вбудованих документів: підтримка запитів.

class User < MyModel
include Mongoid::Document
embeds_many :tickets
...
end

class Ticket < MyModel
include Mongoid::Document
embedded_in :user, :inverse_of => :tickets
...
end

У розділі адміністратора я роблю запит, щоб вибрати всі запити підтримки. Але оскільки колекція квитків вбудована, я не можу запитувати безпосередньо. Це те, що я отримав:

@users_with_pending_tickets = User.only(:tickets).where("tickets.status" => "Pending")

<% for user in @users_with_pending_tickets %>

<% ticket = user.tickets.where(:status => "Pending").first %>

<%= ticket... %>

<% end %>

Це однозначно виглядає некрасиво. Чи є інший спосіб?

Відповіді:

2 для відповіді № 1

Якщо вам потрібно отримати всі квитки, вам слід поїхати references_many відношення замість вбудованих відносин.

Зрештою, MongoDB повинен підтримувати "віртуальні колекції" для вирішення цього поширеного питання, але поки що вам доведеться подолати це обмеження.

Для отримання додаткової інформації див моя відповідь на це подібне питання.