【问题标题】:updating class variables in rails更新rails中的类变量
【发布时间】:2015-03-01 08:33:02
【问题描述】:

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

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

class Customer
   @@customers = []

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

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

【问题讨论】:

    标签: ruby-on-rails class-variables


    【解决方案1】:

    不;当从新的 Customer 对象调用 update_customers 时,@@customers 不会重新初始化为 []。这就是类变量的工作方式。

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

    如上所述:

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

    【讨论】:

      【解决方案2】:
      class Customer
         @@customers = []
      
         def self.update_customers(new_customer)
            @@customers << new_customer
         end
      end
      

      类变量是静态的。它们只初始化一次。 如果您将 update_customers 声明为类方法会很好 您可以调用该方法,如

      cust1 = Customer.new
      Customer.update_customers cust1
      

      【讨论】:

        猜你喜欢
        • 2019-05-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多