Search code examples
rubyself

In Ruby, when should you use self. in your classes?


When do you use self.property_name in Ruby?


Solution

  • Use self when calling a class's mutator. For example, this won't work:

    class Foo
      attr_writer :bar
      def do_something
        bar = 2
      end
    end
    

    The problem is that 'bar = 2' creates a local variable named 'bar', rather than calling the method 'bar=' which was created by attr_writer. However, a little self will fix it:

    class Foo
      attr_writer :bar
      def do_something
        self.bar = 2
      end
    end
    

    self.bar = 2 calls the method bar=, as desired.

    You may also use self to call a reader with the same name as a local variable:

    class Foo
      attr_reader :bar
      def do_something
        bar = 123
        puts self.bar
      end
    end
    

    But it's usually better to avoid giving a local variable the same name as an accessor.