Rails 3 アプリケーションに処方箋モデルがあります。レコードの複製を許可する最善の方法を見つけようとしていますが、保存する前にユーザーが複製を「確認」できるようにしています。
レコードを複製/複製して保存する方法を説明するSO に関するいくつかの質問/回答 (このようなもの) を読みましたが、保存する前にフォームを表示する方法を説明するものはありません。
Rails API を読むとcloneメソッドが使えるようです。
他の質問と回答を読むと、それが可能であることが示されますが、次のもの以外にサンプルコードはありません。
new_record = old_record.dup
私が現在取り組んでいるコントローラー コードは次のとおりです (モデルには関係がありません)。
# 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
ビューからこのクローン アクションにリンクします。
<%= link_to "Create another like this?", clone_prescription_url(@prescription), :method => :put %>
このようにコントローラーにアクションを追加するのと同じくらい簡単ですか?
def clone
@prescription = Prescription.find(params[:id])
@prescription.dup
@prescription.save
end
上記のコードが完全に間違っている場合は申し訳ありません。私はそれを回避しようとしています! 私がクローン作成で達成しようとしていることを誰かが正確に実行しているのを見たことがありますが、保存前の編集ではそうではありません。
複製しているユーザーには、保存されたレコードを編集する権限がありません。純粋に最初のデータ入力用です。