потому что, если вы набрали @f00, будет сложно выяснить, почему ваш код не работает, если вы имели в виду @foo или @Foo.Таким образом, при опечатке будет возникать «ошибка метода» вместо создания новой переменной, которую вы не хотели
Edit
Я неправильно понял вопрос.Я думал, что вы имели в виду источник ActiveRecord, когда они это делают.Настоящая причина в том, что ActiveRecord реализован почти полностью через отражение.Он проверяет базу данных на имя столбца, а затем динамически создает методы установки и получения для этих полей с помощью метода method_missing.Если я правильно помню после того, как вы используете self.field, он устанавливает @field.Это может быть скрыто где-то, как в @attributes [: field].