2010-05-21 7 views

Répondre

28

Vous devez utiliser ActiveRecord reflections.

Ensuite, vous pouvez taper quelque chose comme ceci:

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

qui renverra votre tableau

[:B, :C] 
+17

Pour que 'associations has_many', il est possible de passer un paramètre: 'A.reflect_on_all_associations (: has_many) .map (&: nom) # => [: B,: C]' – Voyta

+0

existe-t-il un moyen de refléter (ie traverser) sur une variable * instance * , où les associations ont été passionnément chargées? –

+0

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

2

Par exemple, vous pouvez essayer:

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

Salut Pioz, Bonne Journée!

0

les solutions trouvé:

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

@ La réponse de nathanvda est beaucoup plus simple, ... – tokland

Questions connexes