Tin*_*n81 1 ruby ruby-on-rails ruby-on-rails-3
可能重复:
ActiveRecord:如何克隆嵌套关联?
我有一张桌子,invoices反过来可以有很多items.
现在,在我的invoices索引视图中,我想在每个invoice说明重复发票的旁边放置一个链接.
如果没有子记录,这将非常简单:
<%= link_to "Duplicate", new_invoice_path(invoice.attributes) %>
Run Code Online (Sandbox Code Playgroud)
但如果发票也items应该重复,怎么办呢?
作为一个Rails新手,我无法理解这一点.所有这些都可以通过new我的控制器内的动作来处理吗?
def new
@invoice = current_user.invoices.build(:project_id => params[:project_id])
@title = "New invoice"
end
Run Code Online (Sandbox Code Playgroud)
或者我是否需要copy在我的控制器中创建另一个名为的函数?
什么是最佳做法?
感谢您的任何意见......
逻辑应该放在模型中
在invoice.rb:
def deep_dup
new_invoice = Invoice.create(self.dup.attributes)
items.each do |item|
new_invoice.items.create(item.dup.attributes)
end
return new_invoice
end
Run Code Online (Sandbox Code Playgroud)
然后在控制器中,执行一个名为的操作duplicate:
def duplicate
new_invoice = @invoice.deep_dup
redirect to new_invoice
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1664 次 |
| 最近记录: |