Я хотел бы понять, какой «правильный» способ инициализировать вложенные поля модели.
Допустим, у вас есть несколько вложенных полей для модели:
class User
has_one :address
accepts_nested_attributes_for :address
end
И вам нужно инициализировать эти атрибуты (в данном случае адрес
), чтобы использовать их в вызове fields_for
.
Пока что я придумал три способа сделать это.
Сначала after_initialize
перехватывает модель:
class User
after_initialize :init_address
protected
def init_address
address ||= build_address
end
Затем у нас есть инициализация в контроллере:
class UsersController
def new
@user = User.new
@user.build_address
end
end
И, наконец, у нас может быть вспомогательный метод, который сделает это за нас:
module FormHelpers
def setup_user(user)
user.address ||= user.build_address
user
end
end
# view
<%= form_for setup_user(@user)... %>
Is есть ли что-нибудь похожее на стандарт или "лучшую практику" для этого сценария? Как вы это делаете и почему?