Car*_*rlo 2 clone ruby-on-rails associations rails-activerecord
我需要在Rails中复制一条记录,然后在创建记录之前将它渲染成一个新的形式.
一切都按照这个有用的答案工作,但我需要用has_many_belongs_to_many关联填充记录
方法dup()让我复制记录中的所有东西但它的关联,我也看到有一个宝石Amoeba可以做一个非常多才多艺的深度克隆,但我想知道是否有一个更简单的解决方案,而不使用宝石
Rails没有内置的深度克隆.在Rails 2.3.x中,您clone可以克隆活动记录属性.在Rails> 3中,他们将此方法重命名为dup,并且现在缺少其文档.但是,它与之相同,clone并且其文档说明如下.
请注意,这是一个"浅"克隆:它仅复制对象的属性,而不复制其关联."深度"克隆的范围是特定于应用程序的,因此留给应用程序根据其需要实现.
因此,如果您想要克隆关联,那么您就是自己的.在我的项目中,我使用了一个replicate为此目的调用的方法.
class User < ActiveRecord::Base
# ...
def replicate
replica = dup
comments.each do |comment|
replica.comments << comment.dup
end
replica
end
end
Run Code Online (Sandbox Code Playgroud)
沿着这些方向的东西.
| 归档时间: |
|
| 查看次数: |
2965 次 |
| 最近记录: |