У меня есть приложение Rails, в котором используется драгоценный камень ActsAsTaggableOnSteroids, представляющий собой механизм Rails. В частности, я использую форк Павла Нартова драгоценного камня. Но неважно это.
Мне нужно добавить определенные функции в модель Tag
, которая предоставляется движком.
Но, согласно моему пониманию движков Rails и волшебных функций загрузки в Rails, если я помещу файл с именем "tag.rb" в каталог моих моделей, то он полностью заменит файл из Engine .
В идеале я мог бы сделать что-то вроде:
class Tag < ActsAsTaggable::Tag
# my stuff
end
... но, увы, это не работает, потому что модель, предоставляемая движком, не имеет пространства имен.
Итак, я придумал этот кошмар, который я вставил в app/models/tag.rb
:
path = ActsAsTaggable::Engine.config.eager_load_paths.grep(/models/).first
require File.join(path, 'tag')
Tag.class_eval { include TagConcern }
Но должен быть лучший способ! Я чувствую, что что-то упускаю. Я бы предпочел не добавлять эту странность в свое приложение, если это возможно.