gpt4 book ai didi

ruby-on-rails - 在 Rails 中复制记录并使用其关联填充新表单

转载 作者:行者123 更新时间:2023-12-03 20:46:13 24 4
gpt4 key购买 nike

我需要在 Rails 中复制一条记录,然后在创建记录之前将其呈现为新形式。

this 之后一切正常有用的答案,但我还需要用 has_many_belongs_to_many 关联填充记录

方法 dup() 让我复制记录中的所有内容,但它的关联,我还看到有一个 gem Amoeba可以进行非常通用的深度克隆,但我想知道是否有不使用 gem 的更简单的解决方案

最佳答案

Rails 没有内置深度克隆。在 Rails 2.3.x 中,您可以使用 clone 来克隆事件记录属性。在 Rails >3 中,他们将此方法重命名为 dup,现在缺少其文档。但是,它与 clone 相同,其文档说明如下。

Note that this is a "shallow" clone: it copies the object’s attributes only, not its associations. The extent of a "deep" clone is application-specific and is therefore left to the application to implement according to its need.

因此,如果您想克隆关联,您只能靠自己了。在我的项目中,我为此使用了一种名为 replicate 的方法。

class User < ActiveRecord::Base
# ...
def replicate
replica = dup

comments.each do |comment|
replica.comments << comment.dup
end

replica
end
end

类似的东西。

关于ruby-on-rails - 在 Rails 中复制记录并使用其关联填充新表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14660704/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com