有没有办法在Rails应用程序中自动要求外部Rails引擎中的模型而不显式引用引擎的路径(在我的情况下是一个丑陋的相对路径)?
我正在尝试为引擎中定义的一组子类添加自动生成装饰器,但BaseClass.descendants仅列出已经需要的后代。
编辑:一些进一步的细节 - 我有一个Rails引擎,它定义了一组模型:
class BaseModel < ActiveRecord::Base
end
class FirstSubmodel < BaseModel
end
class Second Submodel
end
引擎在另一个Rails项目的Gemfile中被引用,如下所示:
gem 'my_engine', path: '.../.../plugins/my_engine'
Rails项目需要在初始化时为每个子模型自动生成装饰器,如下所示:
BaseModel.descendants.each {|descendant| generate_decorator(descendant)}
但是,'descendants'返回一个空数组,因为还没有加载FirstSubmodel和SecondSubmodel。
答案 0 :(得分:0)
我最终使用了MyEngine :: Engine.root,如下所示:
Dir.glob(MyEngine::Engine.root + "app/models/*_submodel.rb").each { |c| require c }