我想根据包含这个 Mixin 的类名在 Mixin 中动态生成一个类方法。
这是我当前的代码:
module MyModule
extend ActiveSupport::Concern
# def some_methods
# ...
# end
module ClassMethods
# Here is where I'm stuck...
define_method "#{self.name.downcase}_status" do
# do something...
end
end
end
class MyClass < ActiveRecord::Base
include MyModule
end
# What I'm trying to achieve:
MyClass.myclass_status
但这给了我以下方法名称:
MyClass.mymodule::classmethods_status
在方法定义中获取基类名称有效(self,self.name ...),但我无法使其适用于方法名称...
到目前为止,我已经尝试过
define_method "#{self}"
define_method "#{self.name"
define_method "#{self.class}"
define_method "#{self.class.name}"
define_method "#{self.model_name}"
define_method "#{self.parent.name}"
但这似乎都不起作用:/
有什么方法可以检索基类名称(不确定如何调用包含我的模块的类)。我已经为这个问题苦苦挣扎了好几个小时,但我似乎无法找到一个干净的解决方案:(
谢谢!