2015-01-03 6 views
0

У меня есть переменная класса с именем @@, которую я хотел бы постоянно обновлять с помощью метода.Обновление переменных класса в rails

Я инициализирую переменную (как пустой массив) в верхней части моей модели. А затем обновить его, когда метод update_customers называется:

class Customer 
    @@customers = [] 

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

Я обеспокоен @@ клиентов быть повторно инициализирован [] и потери данных. Может ли такая повторная инициализация произойти? Когда это произойдет?

ответ

1

Nope; @@customers не будет повторно инициализирован до [], когда update_customers вызывается из нового объекта Customer. Так работают переменные класса.

См. http://rubymonk.com/learning/books/4-ruby-primer-ascent/chapters/45-more-classes/lessons/113-class-variables для углубленной обработки переменных класса.

Как уже упоминалось здесь:

Там не очень много случаев, что вам нужно будет использовать класс variables.`

0
class Customer 
    @@customers = [] 

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

Переменные класса являются статическими. Они инициализируются только один раз. Было бы хорошо, если бы вы объявили update_customers как метод класса . Вы можете назвать метод, подобный

cust1 = Customer.new 
Customer.update_customers cust1 

 Смежные вопросы

  • Нет связанных вопросов^_^