【问题标题】:Requiring Rails Engine Models In Referencing Application在引用应用程序中需要 Rails 引擎模型
【发布时间】:2016-06-02 10:46:34
【问题描述】:

有没有办法在 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。

【问题讨论】:

  • 能否请您详细说明您现有的实现。

标签: ruby-on-rails ruby-on-rails-4 rails-engines


【解决方案1】:

我最终使用了 MyEngine::Engine.root,如下所示:

Dir.glob(MyEngine::Engine.root + "app/models/*_submodel.rb").each { |c| require c }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-01
    • 1970-01-01
    • 2021-12-14
    • 2011-08-05
    • 1970-01-01
    • 2015-02-11
    • 1970-01-01
    相关资源
    最近更新 更多