Rails: модель без таблиц, которая вызывает другие модели - PullRequest
0 голосов
/ 11 ноября 2010

У меня есть приложение Rails с несколькими классами моделей (например, Category, Subcategory, User и т. Д.). Чтобы реализовать не слишком тривиальную функциональность фильтра, я построил иерархию классов фильтров: FilterCategory, FilterSubcategory и т. Д., Которые происходят от FilterBase. Каждый из них использует соответствующий класс «сестры» модели (например, Category.find :all).

Я быстро понял, что я не могу просто назвать «сестринский» модельный класс, не используя сначала «require». Однако теперь я подозреваю, что использование «require» является основной причиной двух других проблем, которые я разместил здесь и здесь , которые, вероятно, портят кэширование классов при config.cache_classes=false.

Есть ли другой способ для меня назвать эти другие модели, не требуя их?

Я попытался использовать плагин BaseWithoutTable, но когда я вызываю «сестринскую модель», я получаю «Недопустимый дескриптор константы: nil», что происходит, поскольку Rails ищет «FilterCategory::Category» вместо «* 1020». *».

Есть мысли о том, как сделать это лучше?

Я использую Rails 2.3.8, Ruby 1.8.7.

Спасибо, Amit

1 Ответ

1 голос
/ 11 ноября 2010

Интересно, хотите ли вы ::Category - получать Category из пространства имен верхнего уровня, а не ограничивать ее областью FilterCategory?

Если ваши модели находятся в каталоге app / models, вам не нужноявно требуют их - Rails уже позаботится об этом.

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