使用模块而不是继承重写Ruby中的实例方法

时间:2018-12-22 15:52:29

标签: ruby module polymorphism

我正在尝试实现覆盖ActiveRecord方法(查找)的方法,但随后也可以访问原始的find方法。我想使用模块在不继承的情况下进行此操作。所以我要寻找的是这样的:

module Override
    def find args
        if some_condition
            do_something
        else
            super args # i realize this is not a "super" but this is the functionality i seek
        end
...

然后在我的ActiveRecord继承的类中

include Override

... # and then business as usual
MyClass.find(id)

这可能吗?目的是要有一个简单的插件来增强ActiveRecord查找方法(使用缓存和其他工具),但是动机不是我的问题,我想知道Ruby是否支持这种想法。这样做的好处是,对于我希望通过自定义查找行为增强的每个类,我不必构建一个介于Rails和我的类之间的子类。

感谢您的帮助, 凯文

0 个答案:

没有答案