Usted puede intentar cambiar las definiciones de relación con los siguientes:
has_many :child_sites, :class_name => 'Site', :cyclic => true
belongs_to :parent_site, :class_name => 'Site', :cyclic => true
no lo hago sé exactamente lo que hace, pero recuerdo que se discutió en el grupo de Mongoid google. Si eso no funciona, debe intentar establecer inverse_of
en las macros de relación. La mayoría de las veces configurando inverse_of
correctamente hace el trabajo.
has_many :child_sites, :class_name => 'Site', :inverse_of => :parent_site
belongs_to :parent_site, :class_name => 'Site', :inverse_of => :child_sites
Sobre las consultas adicionales, sí que habría consultas adicionales cada vez que se desea obtener child_sites de un sitio o el sitio principal de un sitio.
Debería considerar incrustar sitios secundarios en el sitio primario, pero tenga en cuenta que perderá la posibilidad de consultar sitios secundarios de forma independiente. Siempre tendrá que acceder a cualquier sitio secundario como "parent_site> child_sites".
Tenga también en cuenta el límite de 16 MB del tamaño del documento, que es difícil de alcanzar, pero podría ser posible si hay muchos sitios secundarios para un padre y si está almacenando información de plantilla, como html, css, etc. en el documento mismo.
No estoy seguro de cuál es su problema específico, pero este no es un esquema muy amistoso. Tenga en cuenta que las "relaciones" como concepto no existen en mongodb, por lo que lo anterior daría lugar a una gran cantidad de consultas (el controlador deberá consultar por separado cada "relación"). –
Gracias por el asesoramiento, ¿cuál es la mejor manera de crear un sitio principal que tenga un sitio secundario? – Alex