Get the class name of the class who called the parent instance method.

Is there a way for me to do that on ruby ?

class Foo

def self.class_name

self.class.name

end

end

class Bar < Foo

end

class Tar < Foo

end

Bar.class_name

= ‘Bar’

Tar.class_name

= ‘Tar’

I want to get the class name of the class who called the instance method from the parent class.

I tried the code above and it keeps getting me ‘Class’ as the result.

Is that possible in ruby ?

[]`s

Is not instance method, is class method… My bad

You might want something like this.

class Foo

end

Foo.instance_eval do

def class_name

self.name

end

end

class Bar < Foo

end

class Tar < Foo

end

puts Foo.class_name

#=> Foo

puts Bar.class_name

#=> Bar

puts Tar.class_name

#=> Tar

Thanks Mike.

Why do anything fancy? An instance know which class it is. Just ask for the .class and then get that Class’s .name.

irb2.1.3> class Foo; end

#2.1.3 => nil

irb2.1.3> class Bar < Foo; end

#2.1.3 => nil

irb2.1.3> class Baz < Foo; end

#2.1.3 => nil

irb2.1.3> foo = Foo.new

#2.1.3 => #Foo:0x007f98940cb528

irb2.1.3> foo.class.name

#2.1.3 => “Foo”

irb2.1.3> bar = Bar.new

#2.1.3 => #Bar:0x007f98940b55c0

irb2.1.3> bar.class.name

#2.1.3 => “Bar”

irb2.1.3> baz = Baz.new

#2.1.3 => #Baz:0x007f98940b38d8

irb2.1.3> baz.class.name

#2.1.3 => “Baz”

-Rob