Ruby on rails 保证Rails中的加载顺序

Ruby on rails 保证Rails中的加载顺序,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有两个Rails项目,我们称之为Foo和Bar。他们有相同的型号。这些模型存在于指向这些文件的Foo和Bar链接中 某个Foo模型中特定方法的行为需要在Bar中有所不同: 在project Foo的模型/model_a.rb中: class ModelA def method_a puts "default behavior here" end end 在项目栏的某个地方: class ModelA def method_a puts "special behav

我有两个Rails项目,我们称之为Foo和Bar。他们有相同的型号。这些模型存在于指向这些文件的Foo和Bar链接中

某个Foo模型中特定方法的行为需要在Bar中有所不同:

在project Foo的模型/model_a.rb中:

class ModelA
  def method_a
    puts "default behavior here"
  end
end
在项目栏的某个地方:

class ModelA
  def method_a
    puts "special behavior here"
  end
end
因此,以下代码行:

x = model_a.method_a
将在一个项目中执行不同于在另一个项目中执行,而无需Bar干扰Foo的模型。如果Foo的模型只是一个gem,那么可能会存在类似的情况,尽管加载顺序问题会有所不同


我的问题是:这个代码段应该在project Bar中的什么位置?如何保证Bar的mix-in最后加载,以便在运行时在project Bar中执行正确的函数?

继承?这就是你所描述的

如果这是活动记录,那么您可以在Bar应用程序中强制使用表名,然后在那里使用子类

或者,但我认为这是一个黑客。创建名为override_model_a的初始值设定项

require 'modelA'
class ModelA
  # then do your initializing, or include your module here
end
Ruby是“最后一个胜出”的,因此如果您需要原始类,然后在初始值设定项中重写它,它将执行您想要的操作