作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
在我的 Rails 应用程序中,我有 invoices
及其关联的 items
。
在我的 InvoicesController
中,我添加了这个方法:
def duplicate
invoice = Invoice.find(params[:id])
@invoice = invoice.dup
invoice.items.each do |item|
@invoice.items << item
end
render :new
end
def create
@invoice = current_user.invoices.build(params[:invoice])
if @invoice.save
flash[:success] = "Invoice created."
redirect_to edit_invoice_path(@invoice)
else
render :new
end
end
单击链接会使用正确的 invoice
和 items
数据实例化一个表单。
但是,在尝试创建
记录时出现错误:
Couldn't find Item with ID=4 for Invoice with ID=
谁能告诉我我在这里遗漏了什么,或者是否有更聪明的方法来复制包括其关联记录的记录?
感谢您的帮助。
最佳答案
这是复制主要对象及其下方的每个项目的方法。不会保存新对象,也不会保存项目(目前)。
def duplicate
dup.tap do |new_invoice|
items.each do |item|
new_invoice.items.push item.dup
end
end
end
还有一个快速测试来证明:
require 'test_helper'
class InvoiceTest < ActiveSupport::TestCase
def original_invoice
Invoice.create(number: 5).tap do |invoice|
invoice.items.create(name: "a", price: "5")
invoice.items.create(name: "b", price: "50")
end
end
test "duplication" do
new_invoice = original_invoice.duplicate
new_invoice.save
assert_equal 2, new_invoice.items.count
end
end
关于ruby-on-rails - 如何在 Ruby on Rails 中复制记录及其相关记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17012360/
我是一名优秀的程序员,十分优秀!