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
Mike3
(Mike)
3
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
rab
(Rob Biedenharn)
5
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