首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重写ActionDispatch::Request方法

重写ActionDispatch::Request方法
EN

Stack Overflow用户
提问于 2011-07-02 10:24:00
回答 1查看 721关注 0票数 0

我正在尝试理解Rails中的面向对象和继承的概念,这些概念来自于过程背景,特别是我想了解如何覆盖Rails框架中类中的默认行为。

例如,假设我想覆盖ActionDispatch::Request中的一个方法,我假设我这样做:

代码语言:javascript
复制
Request < ActionDispatch::Request

 def method_i_want_to_override
  actions_to_perform
 end

end

不过,我对如何加载它以改变ActionDispatch::Request对象的行为方式感到困惑。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-02 11:41:09

当你使用继承来覆盖一个方法时(即你在一个子类中),你可以再次声明这个方法,就像你已经做的那样:

代码语言:javascript
复制
def method_that_exists_in_superclass
  # stuff here
end

现在,你通常不想重新实现整个方法行为,你只想做一些它已经做的事情(或者撤销它做的事情)。在本例中,您使用super来调用原始方法:

代码语言:javascript
复制
def method_that_exists_in_superclass
  result = super
  result + 7 # for example... but use your imagination
end

您还可以将参数传递给super,这意味着您可以通过对自己的参数进行硬编码来覆盖参数:

代码语言:javascript
复制
def method_that_exists_in_superclass(arg1, arg2)
  super(arg1, :foo)
end

如果在不带任何参数的情况下调用super,则来自子类的方法的所有参数都将传递给父类。这包括给定的任何块。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6554738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档