在rails中扩展方法

时间:2012-08-10 09:43:36

标签: ruby-on-rails ruby methods extend

在我创建的应用程序中,我使用了一个gem。这个gem有一个Module,它有一个方法,当一些东西发生变化时由gem调用。我需要做的是扩展此方法的功能。我无法更改此方法的名称,而是无法调用其他方法。

我说的是这里定义的重建方法:

https://github.com/the-teacher/the_sortable_tree/blob/master/app/controllers/the_sortable_tree_controller.rb

如何在不触及源的情况下为此方法添加功能?

1 个答案:

答案 0 :(得分:2)

您需要在控制器中包含要覆盖的功能名称的模块,然后您可以编写具有相同名称的功能,并在完成工作后调用super。

class A
  include TheSortableTreeController::Rebuild
  def rebuild
     # do something here
     super
  end

通过这种方式,您也可以执行自己的操作以及宝石的操作。如果要完全删除对重建功能的依赖,请从代码中删除super。