方法链别名已经被弃用 - Rails 5 升级

3

我正在更新我的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或其他方法重构,请告诉我,谢谢!

2个回答

1
这对我很有效。我不知道他们为什么一开始要使用alias_method_chain,但这样可以消除弃用警告并具有相同的功能。
module ActiveSupport
  module NumberHelper
    def number_to_delimited(number, options = {})
      number.to_s.sub(/^Infinity$/, "∞")
    end
  end
end

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接