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})