2016-09-19 95 views
3

我正在更新我的Rails應用程序,我需要重構一個使用alias_method_chain的方法,因爲它已被棄用。該消息說,使用模塊#前插所推薦的Rails的5。這裏是我試圖重構幫手:alias_method_chain已被棄用 - Rails 5升級

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或一些其他的方式重構,讓我知道,謝謝您!

回答

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