Ho un modello di prescrizione nella mia applicazione Rails 3. Sto cercando di individuare il metodo migliore per consentire la duplicazione dei record, ma di consentire all'utente di "rivedere" il duplicato prima che venga salvato.Duplicazione di un record in Rails 3
Ho letto un numero di domande/risposte su SO (come ad esempio this) che spiegano come duplicare/clonare il record e quindi salvarlo, ma nessuno che spiega come mostrare il modulo prima del salvataggio.
Leggere l'API Rails è visualizzato il metodo clone è disponibile.
lettura other questions e risposte dimostra che è può essere fatto, ma non v'è alcun codice di esempio a parte:
new_record = old_record.dup
Il codice di controllo Attualmente sto lavorando con è la seguente (il modello non ha relazioni):
# 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
ho intenzione di essere il collegamento a questa azione clone dalla vista con:
<%= link_to "Create another like this?", clone_prescription_url(@prescription), :method => :put %>
È semplice come aggiungere un'azione al mio controller in questo modo?
def clone
@prescription = Prescription.find(params[:id])
@prescription.dup
@prescription.save
end
Mi scuso se il codice di cui sopra è completamente sbagliato, sto cercando di ottenere la mia testa intorno ad esso! Ho visto someone fare esattamente quello che sto cercando di ottenere con la clonazione, ma non con la modifica prima del salvataggio.
L'utente che sta eseguendo la duplicazione non avrà l'autorizzazione per modificare un record una volta salvato. È puramente per l'immissione dei dati iniziale.
Penso che questa sia la risposta giusta, dal momento che Rails imposta l'id a zero quando si utilizza 'dup' su un modello, trattando è nuovo. Vedi http://apidock.com/rails/ActiveRecord/Core/dup –