The usage of self in Ruby

This confused me for some time and I figured I write it down for others to enjoy. When should one use the keyword self in AR:B? For this it is important to realise that Ruby is an interpreted language. Whenever Ruby sees an assignment like bla = 'boe' it first looks for a local varialbe by that name(bla in this case) and if that does not exists it then looks for a method bla=


class Foo
  def bar
    text = 'fake' #assigns a variable 'text'
    text.gsub!() #changes the variable 'text'
  end

  def bla
    text.gsub!() #does not find a variable 'text', then searches for a method 'text'(and fails in this case)
  end
end

So if you want to change a field in an ActiveRecord model you need to tell Ruby not to create a local variable but to use the generated setter method.


class Foo < AR:B
  def bar
    self.text = 'fake' #assigns the field 'text'
    text.gsub!() #changes the variable 'text'
  end
end

One Response to “The usage of self in Ruby”

  1. John conrad Says:

    one more nice topic in your blog and nice comments too keep it up, If you advise some more related links to topic. I’m very interested in CMS and all its related subjects.

Leave a Reply