'How do I work with specific class instances in Ruby?

I want to make a small application where users can create a list of stores and inventories for the stores. Here's what I have for the store class:

class Store
  attr_accessor :name, :inventory
  
  def initialize(name)
    @name = name
    @inventory = []
    @@all << self
  end

end

It initializes with an empty array, and I want to fill it up with items (as strings). I'm aware you can use, say newStore = Store.new to create a store and then further call on newStore, but I want the user to be able to create as many stores as they want and when they create a second newStore it will override that variable. How do I re-access that previous class instance to edit the inventory array?



Solution 1:[1]

You can change it to the following and just create a new array when it wasn't initialized before:

def initialize(name)
  @name = name
  @inventory = []
  @@all ||= []
  @@all << self
end

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 spickermann