У меня есть класс арендодателя и у него есть N адресов. Арендодатель принимает вложенные атрибуты для адресов У меня есть форма, которая используется для создания арендодателя в этой форме, является подформой для создания адреса.Создание вложенной модели из метода родительского создания
Адрес требует, чтобы landlord_id был действительным и, следовательно, сохранил.
Как я создаю арендодателя, как мне создать адрес, не сохраняя арендодателя дважды в вызове метода создания в контроллере арендодателя?
landlord_controller.rb # создать
def create
#check if a landlord of the same name already exists and load that instead
@landlord = Landlord.where(:name => params[:landlord][:name], \
:city_id => params[:landlord][:city_id], \
:province_id => params[:landlord][:province_id]).
first_or_create
if @landlord.save
flash[:success] = #"Thank you for submitting a Landlord "
#@landlord.addresses.build ....
#@landlord.save
redirect_to @landlord
else
render :new
end
end
помещичьей/new.html.erb # формы
<%= form_for @landlord do |f| %>
<%= f.fields_for :address do |address_form| %>
<%= address_form.label :number %>
<%= address_form.text_field :number %>
<%= address_form.label :street %>
<%= address_form.text_field :street %>
<%= address_form.label "#{:unit}#/Apt #" %>
<%= address_form.text_field :unit %>
<%= address_form.label :postal %>
<%= address_form.text_field :postal %>
<% end %>
<% end %>
Собственно, второй '@ landlord.save' сохраняет адреса. Если вы не хотите этого делать, вы можете сохранить каждый «адрес» отдельно. –
В вашем опыте, какой метод более выгоден? – Derptacos