attr_accessor adalah method yang digunakan untuk proses set dan get dari accessor (pengakases variabel), Sesuai dengan Mantra dari DRY (Don’t Repeat Yourself),  dengan menggunakan method ini kita tidak usah repot menduplikasi method yang sama secara berulang-ulang hanya untuk men-set variabel  dari method initialize.

Pengetahuan tentang attr_accessor dibutuhkan karena adakalanya untuk suatu kebutuhan tertentu method ini tidak kita gunakan, untuk lebih jelasnya saya buat sebuah code sederhana yang lengkap tanpa menggunakan attr_accessor.

class Orang
  attr_accessor :nama, :kelamin
  attr_writer :nama
  attr_reader :nama
  attr_writer :kelamin
  attr_reader :kelamin

  def initialize(aNama, aKelamin)
    @nama = aNama
    @kelamin = aKelamin
  end

  #set accessor untuk @nama
  def nama=(aNama)
    @nama = aNama
  end

  #get accessor untuk @nama
  def nama
    return @nama
  end

  #set accessor for @kelamin
  def kelamin=(aKelamin)
    @kelamin = aKelamin
  end

  #get accessor untuk @kelamin
  def kelamin
    return @kelamin
  end

end

t = Orang.new("Asep", "Lelaki tulen")
puts(t.nama)
puts(t.kelamin)

silahkan anda mencobanya dengan melakukan comment pada masing-masing. Saya masukan juga method attr_writer dan attr_reader yang dapat digunakan untuk set accessor dan get accessor instance variable.

class Orang
    attr_writer :nama
    attr_reader :nama
    attr_writer :kelamin
    attr_reader :kelamin

    def initialize(aNama, aKelamin)
      @nama       = aNama
      @kelamin    = aKelamin
    end
end
t = Orang.new("Asep", "Lelaki tulen")
puts(t.nama)
puts(t.kelamin)

kemudian coba code ini,

class Orang
  attr_accessor :nama, :kelamin
  def initialize(aNama, aKelamin)
    @nama       = aNama
    @kelamin    = aKelamin
  end
end
t = Orang.new("Asep", "Lelaki tulen")
puts(t.nama)
puts(t.kelamin)