This is not specific for Rails - I am just using Rails as an example.
I have a model in Rails:
class Item < ActiveRecord::Base
def hello
puts "Hello, #{self.name}"
end
end
(Let's assume that the Item
model (class) has a method called name
.) When do I need to use self.name
and when can I just use name
(e.g., #{name}
)?
It is idiomatic to prefer to omit self.
when invoking methods; it is generally never needed.
You must use self.foo = xxx
when calling a setter method, instead of foo = xxx
, so that Ruby realizes that you are not trying create a new local variable.
do_something
with the same name as a method, you must use self.do_something
to invoke the method, as just do_something
will end up reading the variable.You cannot use self.foo(...)
to call a private method; you must instead call just foo(...)
.