我正在更新我的rails应用,我需要重构一个使用alias_method_chain
的方法,因为它已被弃用。消息说按照Rails 5的建议使用模块#prepend。这是我试图重构的帮助器:
module ActiveSupport
module NumberHelper
def number_to_delimited_with_unicode_infinity(number, options = {})
result = number_to_delimited_without_unicode_infinity(number, options)
result.sub(/^Infinity$/, "∞")
end
alias_method_chain :number_to_delimited, :unicode_infinity
end
end
如果有人知道如何使用super
或其他方式重构,请让我知道,谢谢!
答案 0 :(得分:1)
这对我有用。我不知道为什么他们开始使用alias_method_chain
但是这会消除具有相同功能的弃用警告。
module ActiveSupport
module NumberHelper
def number_to_delimited(number, options = {})
number.to_s.sub(/^Infinity$/, "∞")
end
end
end
答案 1 :(得分:0)
在你的情况下,这个解决方案似乎没问题。如果你必须有一个参考原始方法的猴子补丁,那么你可以在修补之前创建一个别名:
module ActiveSupport
module NumberHelper
# create alias to original method
alias :original_number_to_delimited :number_to_delimited
def number_to_delimited(number, options = {})
result = original_number_to_delimited(number, options)
result.sub(/^Infinity$/, "∞")
end
end
end