Tengo un modelo de prescripción en mi aplicación Rails 3. Estoy tratando de encontrar el mejor método para permitir que los registros se dupliquen, pero permitiendo que el usuario "revise" el duplicado antes de que se guarde.Duplicar un registro en Rails 3
He leído un número de preguntas/respuestas sobre SO (como this) que explican cómo duplicar/clonar el registro y luego guardarlo, pero ninguna que explique cómo mostrar el formulario antes de guardarlo.
Reading the Rails API aparece el método clone está disponible.
lectura other questions y respuestas muestra que se puede hacer, pero no hay código de ejemplo, aparte de:
new_record = old_record.dup
El código del controlador actualmente estoy trabajando con es el siguiente (el modelo no tiene ningún relaciones):
# POST /prescriptions
# POST /prescriptions.json
def create
@prescription = Prescription.new(params[:prescription])
@prescription.localip = request.env['REMOTE_ADDR']
@prescription.employee = @prescription.employee.upcase
respond_to do |format|
if @prescription.save
format.html { redirect_to @prescription, notice: 'Prescription was successfully created.' }
format.json { render json: @prescription, status: :created, location: @prescription }
else
format.html { render action: "new" }
format.json { render json: @prescription.errors, status: :unprocessable_entity }
end
end
end
voy a ser ligarse a esta acción clon desde el punto de vista con:
<%= link_to "Create another like this?", clone_prescription_url(@prescription), :method => :put %>
¿Es tan simple como agregar una acción a mi controlador de esta manera?
def clone
@prescription = Prescription.find(params[:id])
@prescription.dup
@prescription.save
end
Disculpas si el código anterior es completamente incorrecto, ¡estoy tratando de entenderlo! He visto someone hacer exactamente lo que intento lograr con la clonación, pero no con la edición antes de guardar.
El usuario que está duplicando no tendrá permiso para editar un registro una vez guardado. Es puramente para la entrada de datos inicial.
Creo que esta es la respuesta correcta, ya que los carriles establece el identificador a cero cuando se utiliza 'dup' en un modelo, el tratamiento de como nuevo Ver http://apidock.com/rails/ActiveRecord/Core/dup –