Often the use of self
is to force Ruby to recognize that as a method call and not mis-interpret it as a variable. Without prior knowledge of a method called day=
, then day = "x"
looks to Ruby like a variable assignment. self.day = "x"
is always a method call.
The reason this is trouble is because the name
and name=
methods are added dynamically after the User class file has been parsed. The first thing Rails does when using a model is make methods for the associated database fields, but this happens after your user.rb
file is parsed.