2010-05-04 2 views
2

У меня есть куча моделей в подкаталоге, которые наследуются от модели в корневом каталоге моделей. Я хочу иметь возможность установить переменную класса в другой модели, которая перечисляет каждый унаследованный класс модели.Как получить имена моделей внутри моего приложения?

т.е.

@@groups = sub_models.map do { |model| model.class.to_s } 

Не знаете, как добраться до этой информации, хотя ...

ответ

0

Существует полный ответ here. В принципе, вы можете либо прокручивать файлы, либо класс-патч обезьяны (или ActiveRecord). Это, по крайней мере, два пути.

Редактировать: С другой стороны, Rails не будет загружать ваши модели до тех пор, пока это не понадобится, поэтому, хотя путь «файлов» кажется слабым, это, вероятно, ваш единственный вариант (если вы не хотите что-то делать в своих моделях).

0

В Rails в производстве окр это должно работать

Object.subclasses_of ClassInModelDir 

Вы должны загрузить файлы вручную Если Rails.env.development?

0

Вы не сможете это сделать, если предварительно не загрузите свои модели потомков. Именно поэтому разумно реинжинирировать код для использования Class#ancestors вместо descendants (также потомки не являются основной функцией Ruby).

Смежные вопросы