2011-06-16 8 views
1

J'utilise Ruby on Rails 3.0.7 et j'aimerais savoir comment récupérer le nom Active Record Association entre deux classes \ modèles.Récupérer le nom Active Record Association entre deux classes modèles

C'est, j'ai deux modèles

class User < ActiveRecord::Base 
    has_many :accounts 
end 

class Account < ActiveRecord::Base 
    belongs_to :users 
end 

et je voudrais récupérer (sur l'exécution) les nom de l'association, dans ce cas accounts et users cordes.

Est-ce possible? Si oui, comment puis-je faire cela?


MISE À JOUR

Si j'ai plus des déclarations d'association dans User et Account classes (voir l'exemple ci-dessous), comment puis-je récupérer exactement le nom de l'association UserAccount?

class User < ActiveRecord::Base 
    has_many :accounts 
    has_many :articles 
    has_many :comments 
end 

class Account < ActiveRecord::Base 
    belongs_to :users 
    has_many :articles 
    belongs_to :authorization 
end 

Répondre

2

?

User.reflect_on_all_associations.each do |assoc| 
    puts "#{assoc.macro} #{assoc.name}" 
end 
#=> "has_many accounts" 

UPD

User.reflect_on_all_associations.select{|a| a.class_name == "Account"}.each do |assoc| 
    puts "#{assoc.macro} #{assoc.name}" 
end 
#=> "has_many accounts" 
+0

Et si j'ai plus des déclarations d'association dans les classes d'utilisateurs et compte? Comment puis-je récupérer exactement l'association 'Compte'? – user502052

+0

@ user502052, j'ai mis à jour ma réponse – fl00r

Questions connexes