2010-05-21 7 views

Respuesta

28

Usted debe estar utilizando ActiveRecord reflections.

A continuación, puede escribir algo como esto:

A.reflect_on_all_associations.map { |assoc| assoc.name} 

que devolverá la matriz

[:B, :C] 
+17

Para obtener sólo 'asociaciones HAS_MANY', se es posible pasar un parámetro: 'A.reflect_on_all_associations (: has_many) .map (&: name) # => [: B,: C]' – Voyta

+0

hay una manera de reflejar (es decir, poligonal) en una variable * instance * , donde las asociaciones han sido cargadas con entusiasmo? –

+0

Mark Richman: self.class.reflect_on_all_associations ... – stebooks

2

Por ejemplo, usted podría intentar:

aux=Array.new 
Page.reflections.each { |key, value| aux << key if value.instance_of?(ActiveRecord::Reflection::AssociationReflection) } 

Hola Pioz, tenga un buen día!

0

encontrado la solución:

def self.get_macros(macro) 
    res = Array.new 
    self.reflections.each do |k,v| 
    res << k if v.macro == macro.to_sym 
    end 
    return res 
end 
+0

@ respuesta de nathanvda es mucho más sencilla ... – tokland

Cuestiones relacionadas