我有一个类API,它从第三方API中提取对象,并将它们构建为类型的子类APIObject. APIObject子类匹配我从中提取的API中的对象名称:
User < APIObject
Account < APIObject
Run Code Online (Sandbox Code Playgroud)
我想在APIObject中定义一个类方法,允许我使用标准的Rails访问器来提取对象:
user = User.find id
Run Code Online (Sandbox Code Playgroud)
我想将此调用转换为API调用的方法如下:
API::User::findById id
Run Code Online (Sandbox Code Playgroud)
我想访问APIObject子类(User)的名称,self.class.name并使用它来调用constant(API::User),但我知道API::self.class.name不会工作.我可以一遍又一遍地为每个子类重写这个方法,但看起来这应该是可能的,不用这样做.建议?
mat*_*att 31
我想你在找const_get.也许是这样的:
def self.find(id)
API.const_get(self.name).find_by_id(id)
end
Run Code Online (Sandbox Code Playgroud)
(注意你只需要self.name,因为这已经在类的上下文中,并且self.class.name只是Class).