Métodos de classe (rubi)

Novato aqui, tendo dificuldade em entender os métodos de Classe e por que não consigo fazer com que um atributo apareça corretamente na instância.

<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>

Quando eu uso o método de classecreate_with_attributes (no animal.2), espero"white" aparecer quando euputs animal2.color.

Parece que eu o defini usandoattr_accessor Assim como eu tenho "ruído", e ainda o ruído aparece corretamente, enquanto a cor não. Eu não recebo um erro quando executo este programa, mas o atributo .color simplesmente não está aparecendo. Eu acredito que é porque de alguma forma eu o rotulei incorretamente no código.

questionAnswers(2)

yourAnswerToTheQuestion