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