更新rails中的类变量

时间:2015-01-03 04:48:44

标签: ruby-on-rails class-variables

我有一个名为@@ customers的类变量,我想通过一种方法不断更新。

我在模型顶部初始化变量(作为空数组)。然后在调用方法update_customers时更新它:

class Customer
   @@customers = []

   def update_customers(new_customer)
      @@customers << new_customer
   end
end

我担心@@客户被重新初始化为[]并丢失数据。这样的重新初始化会发生吗?什么时候会发生?

2 个答案:

答案 0 :(得分:1)

都能跟得上;从新@@customers对象调用[]时,update_customers不会重新初始化为Customer。这就是类变量的工作原理。

有关类变量的深入处理,请参阅http://rubymonk.com/learning/books/4-ruby-primer-ascent/chapters/45-more-classes/lessons/113-class-variables

如上所述:

  

您需要使用类变量的情况并不多。

答案 1 :(得分:0)

class Customer
   @@customers = []

   def self.update_customers(new_customer)
      @@customers << new_customer
   end
end

类变量是静态的。它们只被初始化一次。 如果将update_customers声明为类方法,那将会很好 你可以像

一样调用这个方法
cust1 = Customer.new
Customer.update_customers cust1