gpt4 book ai didi

ruby - 按名称动态获取 Ruby 类常量

转载 作者:数据小太阳 更新时间:2023-10-29 06:38:43 59 4
gpt4 key购买 nike

我有一个类 API,它从第三方 API 中提取对象并将它们构建到类型为 APIObject 的子类的对象中。 APIObject 子类与我从中提取的 API 中的对象名称相匹配:

User < APIObject
Account < APIObject

我想在 APIObject 中定义一个类方法,允许我使用标准 Rails 访问器拉取对象:

user = User.find id

我想要将此调用转换为这样的 API 调用的方法:

API::User::findById id

我想使用 self.class.name 访问 APIObject 子类 (User) 的名称,并使用它来调用常量 (API: :User),但我知道 API::self.class.name 不会工作。我可以为每个子类一遍又一遍地重写这个方法,但似乎不这样做应该是可能的。有什么建议吗?

最佳答案

我想你在找 const_get .也许是这样的:

def self.find(id)
API.const_get(self.name).find_by_id(id)
end

(请注意,您只需要 self.name,因为它已经在类的上下文中,而 self.class.name 将只是 Class )。

关于ruby - 按名称动态获取 Ruby 类常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18752394/

59 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com