Ruby on rails 保证Rails中的加载顺序
我有两个Rails项目,我们称之为Foo和Bar。他们有相同的型号。这些模型存在于指向这些文件的Foo和Bar链接中 某个Foo模型中特定方法的行为需要在Bar中有所不同: 在project Foo的模型/model_a.rb中: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
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是“最后一个胜出”的,因此如果您需要原始类,然后在初始值设定项中重写它,它将执行您想要的操作