2011-07-19 12 views
8

que tienen un modelo de golf con 2 asociaciones a otro modelo, Árbol:¿Cómo incluir las asociaciones anidadas y de hermanos en el registro activo to_json?

belongs_to :interaction_outline, :class_name => "Tree", 
            :foreign_key => "interaction_outline_id" 
belongs_to :token_outline, :class_name => "Tree", 
            :foreign_key => "token_outline_id" 

leí this y fue capaz de incluir a las asociaciones de hermanos en mi controlador.

@course.to_json(:include=> [:interaction_outline, :token_outline] 

también era capaz de conseguir asociaciones multiplican anidados:

@course.to_json(:include=>{:interaction_outline=> 
           {:include=> {:tree_node=> 
            {:include=> :definition}}}}) 

pero no puedo obtener tanto hermanos y multiplicar anidado incluye:

@course.to_json (:include=> [{:interaction_outline=> 
           {:include=> {:tree_node=> 
            {:include=> :definition}}}}, 
          {:token_outline=> 
           {:include=> {:tree_node=> 
            {:include=> :definition}}}} ]) 
#NoMethodError (undefined method `macro' for nil:NilClass) 
#the error you get when the syntax or the association is wrong 

yo probamos este, también:

@course.to_json (:include=> [:interaction_outline=> 
           {:include=> {:tree_node=> 
            {:include=> :definition}}}, 
          :token_outline=> 
          {:include=> {:tree_node=> 
            {:include=> :definition}}} ]) 
#same error 

¿Qué es la sintaxis correcta aquí?

Respuesta

26

Estás muy cerca. Simplemente use notación hash en lugar de array.

@course.to_json (:include=> {:interaction_outline=> 
           {:include=> {:tree_node=> 
            {:include=> :definition}}}, 
          :token_outline=> 
           {:include=> {:tree_node=> 
            {:include=> :definition}}}}) 
+0

gracias, que trabajó –

+1

PostScript: en general, parece una mala idea mezclar matriz y hash de notación. Si convierte a todos los hash, sin embargo, hay una trampa, si una asociación de hermanos tiene una inclusión y una no, la que no necesita convertirse en un apoyo para un hash vacío, como este: {: include => { : tree_node => {},: definitions => {},: edit_lists => {: include =>: edits}}}. –

+0

gracias! bastante feo pero funciona, ¿has encontrado alguna joya que lo hiciera más bonito? – stream7

Cuestiones relacionadas