У меня есть простая форма Rails, которая использует условное build_association (если еще нет связанного родителя), чтобы включить текстовое поле для редактирования родителя.Это полезно, если нужно добавить новую запись для родителя.Проблема в том, что если родительский объект уже существует, если текстовое поле обновлено, оно будет изменено для родительской записи, затрагивающей множество дочерних элементов.Если build_association вызывается независимо от того, существует ли родительская ассоциация, то постоянно будут создаваться новые дублирующие родители.
Я пытаюсь понять, как я могу использовать build_association и fields_for для добавления нового родителя в базу данных, если пользователь вводит незнакомое имя, но для установки родителя в существующую запись, если имя соответствуетимя существующего родителя.(Если я смогу заставить эту часть работать правильно, следующим шагом будет добавление автозаполнения.) Код ниже:
<%= form_for @sermon, :html => { :multipart => true } do |f| %>
<div class="field">
<%= f.label :title %><br />
<%= f.text_field :title %>
</div>
<div class="field">
<%= f.label :date %><br />
<%= f.text_field :date %>
</div>
<div>
<% @sermon.build_speaker unless @sermon.speaker %>
<%= f.fields_for :speaker do |g| %>
<%= g.label :name, "Speaker name:" %><br />
<%= g.text_field :name %>
<%= g.submit %>
<% end %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>