Ruby on rails 如何在活动模型中初始化金额为零的货币列?

Ruby on rails 如何在活动模型中初始化金额为零的货币列?,ruby-on-rails,currency,Ruby On Rails,Currency,我有一个新的应用程序(Rails 2.3.8),它使用了大量的货币字段。我正在使用money gem(3.0.5)和acts_as_money插件。我已经写了很多rspec模型的例子,在那里一切都很好 我的问题是为新建和编辑定义表单。正如我在过去的复杂布局项目中所做的那样,我将基本表单提取为部分表单,并将其包含在“新建和编辑”视图中 但是,模型对象被创建并在字段中留下空值,并导致money gem抱怨:“nil:NilClass的未定义方法`subunit_to_unit' 我想我可以使用类似于

我有一个新的应用程序(Rails 2.3.8),它使用了大量的货币字段。我正在使用money gem(3.0.5)和acts_as_money插件。我已经写了很多rspec模型的例子,在那里一切都很好

我的问题是为新建和编辑定义表单。正如我在过去的复杂布局项目中所做的那样,我将基本表单提取为部分表单,并将其包含在“新建和编辑”视图中

但是,模型对象被创建并在字段中留下空值,并导致money gem抱怨:“nil:NilClass的未定义方法`subunit_to_unit'

我想我可以使用类似于
after\u initialize()
的东西来钩住Rails中新对象的创建,并将所有money属性设置为零,但这不起作用(出于性能原因,有几篇文章建议不要这样做)


关于钩住我的模型对象并确保它的所有货币值都为零的干净方法,有什么建议吗?

初始化后不会像您认为的那样

To钩住init的方式如下:

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
classmymodel
在\u初始化后,它不会执行您认为它会执行的操作

To钩住init的方式如下:

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
classmymodel