父类可以使用附加额外功能的父方法吗?

时间:2013-07-15 23:17:49

标签: ruby-on-rails ruby methods language-agnostic

我有一个名为Question的父类。有很多类型的问题。

其中一个是MultipleChoice。像MultipleChoice这样的所有子问题类都有一个名为generate_response的方法,该方法返回一个json对象,其中包含我应用程序其余部分生成问题所需的所有部分。

为了让我的应用程序DRY'er,我注意到这个返回的JSON对象中的几个项目是类似的调用。例如,:title始终是子类的title

有没有办法可以在Question内编写一个父方法,将这个静态信息附加到generate_response

的JSON返回值中

示例:

class MultipleChoice < Question
  def generate_response
    {
      title: title
      explanation: explanation
      first_time: check_if_first
    }
  end

class Question < ActiveRecord::Base
 # is there a way inside of this class to append my static info to any child class usage of the method `generate_response`?

1 个答案:

答案 0 :(得分:1)

您可以使用super

class Question < ActiveRecord::Base
  def generate_response(obj)
    static info
  end
end

class InheritsFromQuestion < Question
  def generate_response
    super(self) #this will call the parent class (Question) method
    rest of whatever
  end
end