Как я могу получить названия моделей из моего приложения? - PullRequest
2 голосов
/ 04 мая 2010

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

* 1003 т.е. *

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

Не знаю, как получить эту информацию, хотя ...

Ответы [ 3 ]

0 голосов
/ 04 мая 2010

В Rails, в рабочей среде это должно работать

Object.subclasses_of ClassInModelDir

Вам необходимо загрузить файлы вручную, если Rails.env.development?

0 голосов
/ 05 мая 2010

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

0 голосов
/ 04 мая 2010

Полный ответ здесь . По сути, вы можете перемещаться по файлам или Monkey-patch Class (или ActiveRecord). Это два пути, по крайней мере.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...