我在移除一个在Rails插件中出现的重复时遇到了问题。
以下代码以同样的方式修改了ActiveRecord的查找和计算方法,但我无法消除重复。
下面的查找和计算方法利用了超级关键字,这是一个难点,因为超级关键字只能用于调用与调用方法名称相同的方法,所以我无法将超级关键字移动到由查找和计算共享的方法中。
所以下一步,我尝试从超类ActiveRecord别名化find和calculate类方法,但是,我一直无法正确使用别名语法。如果有人能向我展示,那将是一个很大的帮助。
如果您有更好的方法来完成这项任务,我也希望您发布出来。
我将代码缩减了一下以突出显示问题:
module Geocodable #:nodoc:
def self.included(mod)
mod.extend(ClassMethods)
end
module ClassMethods
def acts_as_geocodable(options = {})
extend Geocodable::SingletonMethods
end
end
module SingletonMethods
def find(*args)
some_method_1
super *args.push(options)
some_method_2
end
# TODO: Remove duplication of find above and calculate below.
def calculate(*args)
some_method_1
super *args.push(options)
some_method_2
end
end
end