2011-04-20 12 views
36
class Article < ActiveRecord::Base 
    has_many :comments 
    belongs_to :category 
end 

¿Existe un método de clase para Artículo con el que pueda recuperar una lista de asociaciones? Sé al mirar el código del modelo que el artículo está asociado a comentarios y categorías. ¿Pero hay un método para obtener estas asociaciones programáticamente?Listando los nombres de los modelos asociados

+1

posible duplicado de [Relaciones del modelo] (http://stackoverflow.com/questions/3178587/relationships-of-model) – fl00r

+0

Sí, estoy de acuerdo. Lo siento, no pude encontrar ese antes. – primary0

+0

@Mike Lewis la respuesta es aún mejor :) – fl00r

Respuesta

54

¿Quieres ActiveRecord::Reflection::ClassMethods#reflect_on_all_associations

por lo que sería:

Article.reflect_on_all_associations 

y se puede pasar de un parámetro opcional para reducir la búsqueda, por lo que:

Article.reflect_on_all_associations(:has_many) 

Article.reflect_on_all_associations(:belongs_to) 

Tenga en cuenta que si desea la lista de todos los nombres de los modelos, puede hacer algo como:

Article.reflect_on_all_associations(:belongs_to).map(&:name) 

Esto devolverá una lista de todos los nombres de modelo que pertenecen a Article.

+1

Esto no es totalmente exacto. Eso devuelve el nombre de las asociaciones, no el nombre de los modelos. – zach

Cuestiones relacionadas