ruby-on-rails-3 - 在Rails 3中复制记录

标签 ruby-on-rails-3 activerecord model clone duplicate-data

我的Rails 3应用程序中有一个处方模型。我正在尝试找出允许重复记录的最佳方法,但是允许用户在保存副本之前对其进行“审阅”。

我已经阅读了很多关于SO的问题/答案(例如this一个),这些问题/答案解释了如何复制/克隆记录然后保存它-但是没有一个问题/答案解释了如何在保存之前显示表单。

读取Rails API时,出现clone方法可用。

阅读other questions和答案表明可以做到,但是除了以下示例代码之外:

new_record = old_record.dup

我当前正在使用的 Controller 代码如下(该模型没有任何关系):
  # 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 %>

像这样向我的 Controller 添加 Action 一样简单吗?
def clone
 @prescription = Prescription.find(params[:id])
 @prescription.dup
 @prescription.save
end

抱歉,如果上面的代码是完全错误的,我正在努力解决它!我已经看到someone确实完成了我要通过克隆实现的目标-但在保存之前没有进行编辑。

保存后,正在复制的用户将无权编辑记录。它仅用于初始数据输入。

最佳答案

如果您希望克隆操作允许用户在保存副本(创建AKA)之前查看其副本,则该副本操作几乎类似于"new"操作,但已填写的字段除外。

因此,您的克隆方法可能是对新方法的修改:

def new
  @prescription = Prescription.new()
end
def clone
  @prescription = Prescription.find(params[:id]) # find original object
  @prescription = Prescription.new(@prescription.attributes) # initialize duplicate (not saved)
  render :new # render same view as "new", but with @prescription attributes already filled in
end

然后,他们可以在 View 中创建对象。

关于ruby-on-rails-3 - 在Rails 3中复制记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11993012/

相关文章:

forms - Yii - 在一个表单提交中的多个记录

ruby-on-rails-3 - Rails的路线:如何在重定向中传递 “all”请求参数

ruby-on-rails - 在评论 polymorphic-association-revised 帖子中添加编辑和删除功能

css - 更改导航丸的事件颜色

mysql - 在具有不同字段的数据库中进行 Rails 搜索

ruby-on-rails - 不支持直接继承自 ActiveRecord::Migration

ruby-on-rails - 批量运行 Rails 查询

ruby-on-rails - has_one/has_many 具有依赖销毁功能,但对键使用不同的名称

ruby-on-rails - 查找后的 Mongoid 文档持久性

excel - 将现有数据透视表添加到数据模型