Question

J'aimerais trouver les assocations d'une classe ActiveRecord à l'exécution ...

Supposons que j'ai les éléments suivants:

class Person < ActiveRecord::Base
  has_many :chairs
  has_many :pens
end

class Chair < ActiveRecord::Base
  belongs_to :person
end

class Pen < ActiveRecord::Base
  belongs_to :person
end

Comment puis-je savoir au moment de l’exécution que cette personne "en a plusieurs"? Chaises et Stylos, et vice versa? Je cherche une méthode qui retournerait un tableau de chaînes (si une telle méthode existe). c'est-à-dire

Person.has_many_assocations 

renverrait:

["chairs", "pens"] 

et

Pen.belongs_to_associations

renverrait:

["person"]

Me manque-t-il d'une méthode comme celle-ci qui existe?

Merci pour votre aide.

Était-ce utile?

La solution

Je pense que la classe ActiveRecord :: Reflection est peut-être ce que vous cherchez. De la documentation:

  Account.reflect_on_all_associations             # returns an array of all associations
  Account.reflect_on_all_associations(:has_many)  # returns an array of all has_many associations

Autres conseils

Cela ressemble à une chose assez idiote de faire de la course. Qu'est-ce que vous essayez exactement de réaliser? Je suppose qu’il existe une solution simple et plus couramment utilisée à votre problème.

S'il le fallait, j'utiliserais TheModel.read_inheritable_attribute (: reflections) .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top