Я считаю, что то, что вы сделали, - самый обычный способ.
На самом деле attr_accessor создает два метода экземпляра для чтения и записи.Он создает 2 метода, таких как:
def color() #getter
@color
end
и
def color=(color) #setter
@color = color
end
И что-то вроде color = color не сработает, потому что тогда цвет будет рассматриваться как локальная переменная, если он найден слеваназначения.Вы можете использовать self.color = color, хотя.Опять же, если цвет не находится в левой части какого-либо выражения, он будет работать нормально, как показано ниже:
def show_color
puts color
end