我目前面临的问题是,我的所有对象都使用具有“相同”初始值的实例变量,而我只读取了这个。
def initialize
@available_ids = read_only_value
end
但这里有一个棘手的事情:这个“read_only_value”是从 API 中检索的。为简单起见,我们假设该值是一个整数数组,并且每月更改一次。
但是我不想在每次创建对象时通过检索值来拒绝 API。如果我改用类变量怎么办?
class Foo
@@available_ids = read_only_value
def initialize
@available_ids = @@available_ids //weird but let's go with it
end
end
我认为这将解决垃圾邮件 API 的问题,因为它仅在变量初始化后才执行...
但是什么时候会发生这种情况呢?当我启动我的 Rails 应用程序时,当我创建第一个对象时?它会永远更新吗?由于值每月更改一次,我该如何获取更新?
PS:我想最好的选择是将 ID 保存在数据库中,并偶尔或按需检查 ID。
它在类加载时发生(阅读:在 Rails 启动期间。)
此外,您不需要类变量。类实例变量就足够了:
class Foo
@available_ids = read_only_value
def initialize
@available_ids = self.class.instance_variable_get :@available_ids
end
end
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句