Предполагая следующую модель:
class Model < ActiveRecord::Base
def initialize(*args)
super
self.du = 1000
end
def duration=(val)
self.du = val
end
def duration_day
(du / (60 * 60 * 24)).floor
end
def duration_day=(val)
duration_tmp = duration_day - val
self.duration = duration_tmp
end
end
Атрибут "du" сохраняется в базе данных. Я хочу инициализировать "du", когда создается новый экземпляр Model, чтобы заполнить элемент формы с именем "duration_day". Это работает до сих пор.
Тем не менее, когда форма отправлена, и значение, указанное пользователем для «duration_day», распространяется в новый экземпляр Model контроллером, как обычно:
def create
@model = Model.new
@model = Model.new(params[:model])
end
..., я получаю NoMethodError неопределенный метод `/ 'для nil: NilClass , потому что атрибут" du "не был инициализирован в это время, потому что" super "вызывается перед фактической инициализацией. Удаление «super» или перемещение его вниз в рамках метода «initialize» вызывает другие ошибки.
Есть ли шанс заставить это работать?