Правильный способ инициализации вложенных полей в формах Rails

Я хотел бы понять, какой «правильный» способ инициализировать вложенные поля модели.

Допустим, у вас есть несколько вложенных полей для модели:

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 есть ли что-нибудь похожее на стандарт или "лучшую практику" для этого сценария? Как вы это делаете и почему?

8
задан Federico Builes 9 December 2011 в 23:56
поделиться