ActiveRecord: почему я. вместо @ для доступа к значениям столбца в модели? - PullRequest
2 голосов
/ 29 декабря 2010

Я запутался, почему к значениям столбцов для записи нельзя получить доступ с помощью @column_name.Почему они не являются переменными экземпляра?Как activerecord держит их стоимость?Почему необходимо ставить перед именем столбца префикс «self».за задание?

Спасибо за разъяснение этой тайны для меня!

1 Ответ

2 голосов
/ 29 декабря 2010

потому что, если вы набрали @f00, будет сложно выяснить, почему ваш код не работает, если вы имели в виду @foo или @Foo.Таким образом, при опечатке будет возникать «ошибка метода» вместо создания новой переменной, которую вы не хотели

Edit

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...