Ответ 1
Часто использование self
заключается в том, чтобы заставить Ruby распознать это как вызов метода, а не неправильно интерпретировать его как переменную. Без предварительного знания метода, называемого day=
, тогда day = "x"
выглядит как Ruby как присвоение переменной. self.day = "x"
всегда является вызовом метода.
Причина в том, что это проблема, потому что методы name
и name=
добавляются динамически после того, как файл класса пользователя был разобран. Первое, что делает Rails при использовании модели, - это методы для связанных полей базы данных, но это происходит после анализа файла user.rb
.