When browsing the internet about ruby on rails, I see the word super. Can someone tell what it is and what it can do?
4 Answers
super method calls the parent class method.
for example:
class A def a # do stuff for A end end class B < A def a # do some stuff specific to B super # or use super() if you don't want super to pass on any args that method a might have had # super/super() can also be called first # it should be noted that some design patterns call for avoiding this construct # as it creates a tight coupling between the classes. If you control both # classes, it's not as big a deal, but if the superclass is outside your control # it could change, w/o you knowing. This is pretty much composition vs inheritance end end If it is not enough then you can study further from here
2when you are using inheritance if you want to call a parent class method from child class we use super
c2.1.6 :001 > class Parent 2.1.6 :002?> def test 2.1.6 :003?> puts "am in parent class" 2.1.6 :004?> end 2.1.6 :005?> end => :test_parent 2.1.6 :006 > 2.1.6 :007 > class Child < Parent 2.1.6 :008?> def test 2.1.6 :009?> super 2.1.6 :010?> end 2.1.6 :011?> end => :test_parent 2.1.6 :012 > Child.new.test am in parent class => nil 2.1.6 :013 > There are different ways we can use super(ex: super, super()).
It was used to implement super class implementation of the current method. Within the body of a method, calls to super acts just like a call to that original method. And The search for a method body starts in the superclass of the object that was found to contain the original method.
def url=(addr) super (addr.blank? || addr.starts_with?('http')) ? addr : end Ruby uses the super keyword to call the superclass implementation of the current method. Within the body of a method, calls to super acts just like a call to that original method. The search for a method body starts in the superclass of the object that was found to contain the original method.
def url=(addr) super (addr.blank? || addr.starts_with?('http')) ? addr : end