Métodos de clase (rubí)

Newbie aquí, me cuesta entender los métodos de clase y por qué no puedo obtener un atributo para que se muestre correctamente en la instancia.

<code>class Animal
  attr_accessor :noise, :color, :legs, :arms

  def self.create_with_attributes(noise, color)
    animal = self.new(noise)
    @noise = noise
    @color = color
    return animal
  end

  def initialize(noise, legs=4, arms=0)
    @noise = noise
    @legs = legs
    @arms = arms
    puts "----A new animal has been instantiated.----"
  end
end

animal1 = Animal.new("Moo!", 4, 0)
puts animal1.noise
animal1.color = "black"
puts animal1.color
puts animal1.legs
puts animal1.arms
puts

animal2 = Animal.create_with_attributes("Quack", "white")
puts animal2.noise
puts animal2.color
</code>

Cuando uso el método de clasecreate_with_attributes (en animal.2), espero"white" para aparecer cuando yoputs animal2.color.

Parece que lo he definido usandoattr_accessor al igual que tengo "ruido", y sin embargo, el ruido aparece correctamente mientras que el color no lo hará. No obtengo un error cuando ejecuto este programa, pero el atributo .color simplemente no aparece. Creo que es porque de alguna manera lo he etiquetado incorrectamente en el código.

Respuestas a la pregunta(2)

Su respuesta a la pregunta