2012-05-10 45 views
1

我有一個類Invoice,它繼承自ActiveRecord::BaseInvoice有一個屬性tax。我想要做的是,從tax屬性的to_s方法返回格式化字符串,看起來像19,00 %覆蓋特定實例屬性的方法

現在,我該如何覆蓋實例屬性的to_s方法?

我知道,我可以在啓用number_with_precision和I18n的視圖中執行此操作,但我希望功能處於中心位置。這是屬性的to_s方法。

這是實現這種行爲的正確方法,還是有另一種方法來完成這一行爲?

回答

2

您不能覆蓋屬性的to_s方法。你可以要做的就是在你的發票模型中創建一種稱爲formatted_tax這樣的:

class Invoice < ActiveRecord::Base 
    def formatted_tax 
    # do your formatting on self.tax here 
    end 
end 
+1

我假設他們的稅務屬性是十進制或漂浮在數據庫中,而不是一個字符串,但是這仍然是準確我會做什麼。 –

+0

是的,謝謝!這就是我現在所做的。但是我認爲它會更好,如果'to_s'返回格式化的字符串。 @DylanMarkow:這是來自數據庫的「Float」,你是對的。我錯過了,對不起。 – Hiasinho

+0

你可以將'formatted_tax'重命名爲'to_s',並且在這個答案中做所有事情。 – Flexoid