Я делаю это довольно часто для значений по умолчанию. Это работает хорошо и все еще позволяет пользователю изменять это. Помните, что метод инициализации вызывается, когда вы говорите MyObject.new
. Тем не менее, вы можете прочитать эту запись в блоге (хотя и немного устаревшую) об использовании initialize
.
Вы должны использовать after_initialize
вместо initialize
. ActiveRecord :: Base требуется метод initialize для подготовки многих вспомогательных методов. Если в вашей модели определен after_initialize
метод, он вызывается как обратный вызов для new, create, find и любых других методов, которые генерируют экземпляры вашей модели.
В идеале вы бы хотели определить это так:
def after_initialize
@attribute ||= default_value
end
Также обратите внимание, что вы не можете использовать этот обратный вызов как другие, вы должны определить метод с именем after_initialize (как выше), чтобы он работал Вы не можете сделать следующее:
after_initialize :run_some_other_method