Предположим, у меня есть объект Person, который has_many :foos и :bars.
Person
has_many
:foos
:bars
Учитывая экземпляр p (p = Person.new), как программно определить, какие отношения доступны?
p = Person.new
т.е. p.some_method => ["foo", "bar"]
p.some_method => ["foo", "bar"]
Вы можете использовать Active Record Reflections (API здесь )
В вашем примере:
p.class.reflect_on_all_associations(:has_many).collect {|a| a.name}