Modeling muchos a muchos: a través de Mongoid / MongoDB

Soy relativamente nuevo en Mongoid / MongoDB y tengo una pregunta sobre cómo modelar una relación específica de muchos a muchos.

Tengo unUser modelo y unProject modelo. Los usuarios pueden pertenecer a muchos proyectos, y cada membresía del proyecto incluye un rol (por ejemplo, "administrador", "editor" o "espectador"). Si estuviera usando ActiveRecord, entonces establecería una asociación de muchos a muchos entreUser yProject utilizandohas_many :through y luego pondría un campo para el rol en la tabla de unión.

¿Cuál es una buena manera de modelar este escenario en MongoDB y cómo declararía ese modelo con Mongoid? El siguiente ejemplo parece una buena forma de modelar esto, pero no sé cómo declarar con elegancia la asociación relacional entreUser y el @ incrustaProjectMembership con Mongoid.

¡Gracias por adelantado

db.projects.insert(
  { 
    "name" : "Test project",
    "memberships" : [
      {
        "user_id" : ObjectId("4d730fcfcedc351d67000002"),
        "role" : "administrator"
      },
      {
        "role" : "editor",
        "user_id" : ObjectId("4d731fe3cedc351fa7000002")
      }
    ]
  }
)

db.projects.ensureIndex({"memberships.user_id": 1})

Respuestas a la pregunta(1)

Su respuesta a la pregunta