У меня проблемы с удалением дублирования, которое я представил в плагине rails.
Приведенный ниже код изменяет методы поиска и вычисления ActiveRecord таким же образом, но мне не удалось удалить дублирование.
Приведенные ниже методы поиска и вычисления используют ключевое слово super, которое является одним препятствием, поскольку ключевое слово super можно использовать только для вызова метода, имеющего то же имя, что и вызывающий метод, поэтому я не могу переместить ключевое слово super в метод, общий для поиска и вычисления.
Итак, затем я попытался наложить псевдонимы методов поиска и вычисления класса из суперкласса ActiveRecord, однако мне не удалось получить правильный синтаксис для псевдонимов. Если бы кто-то мог показать мне это, это было бы очень полезно.
Если у вас есть лучший способ сделать это, я бы тоже хотел, чтобы вы опубликовали это.
Ниже я немного урезал код, чтобы выделить проблему:
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