Assignment for has_many objects

Arnaud J. wrote:

      line_items << li
So far, I know that has_many adds several methods, such as line_items<<
and line_items=.
I also know that, inside a method, an assignment to some "var" without
"self." before it might confuse ruby which can take "var" for a local
variable. So using self.var is "safer".

But here, there's no "self.line_items << li". Why does calling
"line_items <<" is enough for this piece of code to understand that
line_items isn't a mere variable ?

"self" is not needed here because the line is not an assignment
(no "="). Unlike an assignment, for the line to have any meaning
line_items must have been defined previously, so the interpreter
sees no ambiguity.