在共享代码文件夹中扩展模型的行为

时间:2014-10-10 11:34:34

标签: ruby-on-rails ruby ruby-on-rails-3

我的项目目录中有一个common文件夹,我们在项目之间共享一些类(此时使用其他技术作为引擎不是我们的选项)。我们的项目结构已经复制了#39;在此文件夹中,我们有一些路径,如common/app/modelscommon/lib等等。要加载我们正在使用的所有模型:

config.autoload_paths += %W(
  #{config.root}/common/app/models
  #{config.root}/lib
)

但现在我需要以某种方式扩展common/app/models文件夹中类的行为。

我的第一个选择是在常规应用程序模型文件夹中创建一个新的ExtendedModel,从SharedModel继承,将记录迁移到新模型,然后将ExtendedModel = SharedModel之类的内容放入初始化。它会起作用,但似乎有点棘手。

我的第二个选择是在应用程序模型文件夹中创建一个具有相同名称SharedModel和不同方法的新模型,但是Rails似乎忽略了这个模型并且只使用{{ 1}}。

任何想法都将受到赞赏:)

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').

我正在做更多的测试,但似乎正在发挥作用。