我的项目目录中有一个common
文件夹,我们在项目之间共享一些类(此时使用其他技术作为引擎不是我们的选项)。我们的项目结构已经复制了#39;在此文件夹中,我们有一些路径,如common/app/models
,common/lib
等等。要加载我们正在使用的所有模型:
config.autoload_paths += %W(
#{config.root}/common/app/models
#{config.root}/lib
)
但现在我需要以某种方式扩展common/app/models
文件夹中类的行为。
我的第一个选择是在常规应用程序模型文件夹中创建一个新的ExtendedModel
,从SharedModel
继承,将记录迁移到新模型,然后将ExtendedModel = SharedModel
之类的内容放入初始化。它会起作用,但似乎有点棘手。
我的第二个选择是在应用程序模型文件夹中创建一个具有相同名称SharedModel
和不同方法的新模型,但是Rails似乎忽略了这个模型并且只使用{{ 1}}。
任何想法都将受到赞赏:)
答案 0 :(得分:-1)
最后我找到了某种解决方案,虽然我不能认为它是一个非常令人满意的解决方案:(。
我在shared_model.rb
中添加了一个app/models
文件,其中包含以下内容:
SharedModel.class_eval do
def overriden_method
puts 'hi!'
end
end
然后我添加了一个包含内容的初始化程序:
load('app/models/shared_model.rb').
我正在做更多的测试,但似乎正在发挥作用。