Вывести список всех моделей в дереве наследования, начиная с ActiveRecord :: Base - PullRequest
1 голос
/ 17 июля 2011

В настоящее время я очень смущен использованием descendants для ActiveRecord :: Base-Objects.Я просмотрел Интернет и протестировал все решения, но ни одно из них не соответствует моим потребностям.

Что я хочу сделать: получить массив всех подклассов ActiveRecord :: Base, включая подклассы этих подклассов, например,

Entity < ActiveRecord::Base
ChildEntity < Entity

Property < ActiveRecord::Base

Мои текущие проблемы: ActiveRecord :: Base.descendants НЕ перечисляет все классы, унаследованные от ActiveRecord :: Base.Возможно, ошибка на моей стороне: здесь мой код.

 def all_entities
   rec_all_entities(ActiveRecord::Base)
 end

 def rec_all_entities(motherEntity)
    logger.debug("mother: " + motherEntity.to_s + " descendants: " + motherEntity.descendants.to_s)
    motherEntity.descendants.each do |childEntity|
      rec_all_entities(childEntity)
    end
 end  

Для целей отладки я просто распечатываю.Я использую Rails 3.

Я думаю, что ошибка должна заключаться в моем коде.Я вызываю метод, который в данный момент отображается только с помощью <% all_entities %>

Спасибо за вашу помощь.

Ответы [ 2 ]

7 голосов
/ 04 января 2014

Это хорошо сработало для меня.Кроме того, взято из Есть ли способ получить коллекцию всех моделей в вашем приложении Rails?

1 голос
/ 18 февраля 2012

Если вы находитесь в режиме разработки, вы должны прикоснуться к каждой модели, прежде чем она будет поднята desendants

Взято из Есть ли способ получить коллекцию всех Моделей в вашем приложении Rails?

...