我正在处理一个Rails应用程序,在这个应用程序中,我有一个"Type"模型与"Node"单表继承模型相关联:任何可能的"Node"子类都在类型表中被定义为一个"Type"。
现在,通过在初始化器中加载所有类,使这成为可能,但我希望只在需要时加载子类。
我能想到的最好解决方案是,在未初始化的常量上回退并检查该常量是否能够表示应用程序中的一个类,类似于"method_missing"的做法。
我希望能得到一些关于如何在哪里定义这个逻辑或者是否有更好的解决方案的建议。
我正在处理一个Rails应用程序,在这个应用程序中,我有一个"Type"模型与"Node"单表继承模型相关联:任何可能的"Node"子类都在类型表中被定义为一个"Type"。
现在,通过在初始化器中加载所有类,使这成为可能,但我希望只在需要时加载子类。
我能想到的最好解决方案是,在未初始化的常量上回退并检查该常量是否能够表示应用程序中的一个类,类似于"method_missing"的做法。
我希望能得到一些关于如何在哪里定义这个逻辑或者是否有更好的解决方案的建议。
我不知道这是否是新的,但我认为它值得添加。可以将method missing用作类方法。
class Example
def method_missing(method_name, *arguments, &block)
puts 'needs this instance method'
end
def self.method_missing(method_name, *arguments, &block)
puts 'needs this class method'
end
end
有一个const_missing方法:它的作用类似于method_missing,但它是关于常量的。
rescue
来解决未定义常量错误并加载/创建你的类。