2010-09-13 47 views
1

我有一個新的應用程序(Rails 2.3.8),使用大量的金錢領域。我使用的是金錢寶石(3.0.5)和acts_as_money插件。我寫了一些rspec模型示例,並且在那裏似乎一切正常。如何初始化活動模型中零金額的Money列?

我的問題是定義新的&編輯窗體。正如我在過去的複雜佈局項目中所做的那樣,我將基本表單提取到了一個部分,並將其包含在新的編輯視圖&中。

但是,模型對象被創建並且在域中留有空位,並導致money gem抱怨:「未定義的方法`subunit_to_unit'爲nil:NilClass」。我認爲我可以使用類似after_initialize()的鉤子來創建Rails中的一個新對象,並將所有的金錢屬性設置爲零,但這不起作用(並且出於性能原因推薦了幾個帖子)。 ..

任何建議在一個乾淨的方式來鉤住我的模型對象,並確保它有零的所有貨幣值?

回答

1

after_initialize不會做你認爲它

的方式太掛鉤到初始化如下:

class MyModel < ActiveRecord::Base 

    def initialize(*args, &block) 
    super   # no() form is equivalent to super(*args, &block) 
    set_defaults 
    end 

    private 

    def set_defaults 
    # Do your defaults here 
    end 

end