Как инициализировать столбец Money с нулевой суммой в Active Model?

У меня есть новое приложение (Rails 2.3.8), которое использует много полей для денег. Я использую гем денег (3.0.5) и плагин act_as_money. Я написал несколько примеров моделей rspec, и, похоже, все работает нормально.

Моя проблема в определении форм для новых и редактирования. Как и в предыдущих проектах для сложных макетов, я извлек базовую форму в часть и включил ее в новые и редактируемые представления.

Тем не менее, объект модели создается и остается с пустыми значениями в полях, что приводит к тому, что денежный драгоценный камень выдает жалобу: "неопределенный метод`subunit_to_unit'для nil:NilClass".

Я думал, что мог бы использовать что-то вроде after_initialize() подключиться к созданию нового объекта в Rails и установить все атрибуты money на ноль, но это не сработало (и несколько сообщений рекомендовано для этого по соображениям производительности)...

Какие-нибудь предложения по чистому способу зацепить мой модельный объект и убедиться, что у него есть нули для всех денежных значений?

1 ответ

Решение

after_initialize не делает то, что вы думаете, делает

способ подключиться к 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
Другие вопросы по тегам