簡體   English   中英

alias_method_chain已棄用 - Rails 5升級

[英]alias_method_chain is deprecated - Rails 5 upgrade

我正在更新我的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或其他方式重構讓我知道謝謝!

這適合我。 我不知道為什么他們開始使用alias_method_chain ,但這消除了具有相同功能的棄用警告。

module ActiveSupport
  module NumberHelper
    def number_to_delimited(number, options = {})
      number.to_s.sub(/^Infinity$/, "∞")
    end
  end
end

在你的情況下,這個解決方案似乎很好。 如果你必須有一個參考原始方法的猴子補丁,那么你可以在修補之前創建一個別名:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM