Ruby/Rails 类变量何时初始化?

0lli.rocks

我目前面临的问题是,我的所有对象都使用具有“相同”初始值的实例变量,而我只读取了这个。

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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

活动的实例变量何时初始化?

来自分类Dev

Git Push rubyrails中的Heroku Master错误

来自分类Dev

类实例变量的初始化顺序?

来自分类Dev

如何初始化类变量?

来自分类Dev

从变量初始化飞镖类

来自分类Dev

更改已初始化变量的类

来自分类Dev

静态变量何时真正初始化

来自分类Dev

成员何时初始化?

来自分类Dev

类变量将在基类之后初始化

来自分类Dev

Swift-初始化属于类的类变量

来自分类Dev

基类变量用派生类初始化

来自分类Dev

Python使用初始化文件和默认常量文件中的变量初始化类

来自分类Dev

在类本身中初始化 TypeScript 变量与在构造函数中初始化的区别

来自分类Dev

Python线程锁定/类变量初始化混乱

来自分类Dev

Java构造函数中类变量的初始化

来自分类Dev

Typescript初始化类类型的静态变量

来自分类Dev

模板类的静态成员变量的隐式初始化

来自分类Dev

声明和初始化实例/类变量的首选方式

来自分类Dev

在Swift中初始化类实例并访问变量

来自分类Dev

在Swift中@objc类中的变量的惰性初始化

来自分类Dev

在构造函数中初始化数组类变量

来自分类Dev

使用正在初始化的类的变量名

来自分类Dev

在没有构造函数的类内初始化变量

来自分类Dev

在PHP的类初始化中传递可选的配置变量

来自分类Dev

匿名类中的“变量示例可能尚未初始化”

来自分类Dev

在声明中或使用init初始化Swift类变量?

来自分类Dev

初始化类的私有成员变量

来自分类Dev

Java:超类中私有变量的初始化

来自分类Dev

Python-覆盖类变量的初始化