Necesito asociar dos modelos con un simple has_many. El problema es que no quiero usar el id (_id) como clave principal para la asociación. Todavía quiero que el modelo siga usando los ObjectIds predeterminados para todo lo demás.Teclas personalizadas para la asociación Mongoid
(Esto se está ejecutando en Rails3.1 + Mongoid)
Así que básicamente quieren:
class Message
...
field :message_id, :default => proc { "fail-#{Time.now.to_f.to_s}" }
...
has_many :message_reports, primary_key: :message_id, foreign_key: :message_id
...
end
class MessageReport
...
field :message_id, :default => proc { "fail-#{Time.now.to_f.to_s}" }
...
has_many :message, primary_key: :message_id, foreign_key: :message_id
...
end
Esto sólo funcionaría para ActiveRecord. Mongoid no admite la opción primary_key.
Entonces, ¿cómo obtengo los mismos resultados para las colecciones Mongoid?
Antes de decir: no hagas eso ...
La razón por la que realmente necesito kay en este campo y no el identificador adecuado es que estos son los mensajes ... y los message_ids son identificadores únicos devuelto por la API que llamo para enviar un mensaje. Más tarde, se recibe la misma identificación en las devoluciones de llamada desde el otro lado.
Pude hacer consultas y guardarlas en un método para encontrar los informes "asociados" de un mensaje y viceversa ... Prefiero que sean asociaciones reales, si es posible.
Pude forzar el proceso de recepción de informes para buscar y hacer coincidir los objetos para la asociación ... pero prefiero no poner esa responsabilidad allí cuando es superfluo y no tiene nada más que hacer con esta información además de validarla y guardarla.
En resumen: yo preferiría una asociación :)
+1 para trabajar proactivamente con objeciones :-) –
jeje, lo he preguntado en línea antes;) –
@MartinWestin resolvió esto? Tengo exactamente el mismo problema – jbnunn