Los atributos anidados de RoR producen duplicados cuando se editan

Estoy tratando de seguir a Ryan BatesRailsCast # 196: modelo anidado forma parte 1. Hay dos diferencias aparentes con la versión de Ryans: 1) Estoy usando andamios incorporados y no ingenioso como él está usando, y 2) Estoy corriendo rieles 4 (Realmente no sé qué versión está usando Ryans en su elenco , pero no es 4).

Así que aquí está lo que hice

rails new survey2
cd survey2
bundle install
rails generate scaffold survey name:string
rake db:migrate
rails generate model question survey_id:integer content:text
rake db:migrate

Luego agregué las asociaciones a los modelos como tal.

class Question < ActiveRecord::Base
  belongs_to :survey
end

y entonces

class Survey < ActiveRecord::Base
  has_many :questions
  accepts_nested_attributes_for :questions
end

Luego agregué la parte de vista anidada

<%= form_for(@survey) do |f| %>
  <!-- Standard rails 4 view stuff -->

  <div class="field">
    <%= f.label :name %><br>
    <%= f.text_field :name %>
  </div>
  <div class="field">
    <%= f.fields_for :questions do |builder| %>
      <div>
        <%= builder.label :content, "Question" %><br/>
        <%= builder.text_area :content, :rows => 3 %>
      </div>
    <% end %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

y, finalmente, el controlador para que se creen 3 preguntas cada vez que se crea una instancia de una nueva encuesta.

class SurveysController < ApplicationController
  before_action :set_survey, only: [:show, :edit, :update, :destroy]

  # Standard rails 4 index and show 

  # GET /surveys/new
  def new
    @survey = Survey.new
    3.times { @survey.questions.build }
    Rails.logger.debug("New method executed")
  end

  # GET /surveys/1/edit
  def edit
  end

  # Standard rails 4 create

  # PATCH/PUT /surveys/1
  # PATCH/PUT /surveys/1.json
  def update
    respond_to do |format|
      if @survey.update(survey_params)
        format.html { redirect_to @survey, notice: 'Survey was successfully updated.' }
        format.json { head :no_content }
      else
        format.html { render action: 'edit' }
        format.json { render json: @survey.errors, status: :unprocessable_entity }
      end
    end
  end

  # Standard rails 4 destroy

  private
    # Use callbacks to share common setup or constraints between actions.
    def set_survey
      @survey = Survey.find(params[:id])
    end

    # Never trust parameters from the scary internet, only allow the white list through.
    def survey_params
      params.require(:survey).permit(:name, questions_attributes: [:content])
    end
end

Entonces, crear una nueva encuesta con tres preguntas está bien. Sin embargo, si trato de editar una de las encuestas, se mantienen las tres preguntas originales, mientras que se crean otras tres adicionales. Así que en lugar de tener 3 preguntas para la encuesta editada, ahora tengo 6. Agregué

Rails.logger.debug("New method executed")

al nuevo método en el controlador, y por lo que puedo decir, no se ejecuta cuando estoy haciendo una operación de edición. ¿Alguien puede decirme qué estoy haciendo mal?

¡Cualquier ayuda es muy apreciada!

Respuestas a la pregunta(2)

Su respuesta a la pregunta