У меня есть приложение 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