Не переопределяйте initialize
Это может привести к поломке многих вещей в ваших моделях. Если бы мы знали, зачем вам нужно, мы могли бы помочь лучше (не до конца понимаете ваше объяснение формы как скелета, вам нужны атрибуты формы для создания других атрибутов - см. Ниже). Я часто использую крючок, как предложил Марсель. Но если вы хотите, чтобы это происходило постоянно, а не перед созданием или сохранением объекта, используйте хук after_initialize
.
def after_initialize
# Gets called right after Model.new
# Do some stuff here
end
Также, если вы просто ищете некоторые значения по умолчанию, вы можете предоставить средства доступа по умолчанию, например: (где some_attribute
соответствует имени столбца атрибута вашей модели)
def some_attribute
attributes[:some_attribute] || "Some Default Value"
end
или писатель
def some_attribute=(something)
attributes[:some_attribute] = something.with_some_changes
end
Если я правильно понимаю ваш комментарий, похоже, вы предоставляете форму, которая сделает вашу модель неполной, а другие атрибуты основаны на частях этой формы? В этом случае вы можете использовать любой из вышеперечисленных методов after_initialize
или some_attribute=
, чтобы затем создать другие атрибуты в вашей модели.