这是一个新手问题。
我在rails中有一对多的关系,认为项目有许多任务。我想为用户提供为新项目重新创建项目和任务的能力(考虑入职员工,然后使用相同的任务)。因此,在每个项目记录上,添加一个Duplicate
按钮。当点击时,我将创建一个新项目,其中更改了一些属性,并为该项目重新创建所有任务。
我的问题是一般性的,我该做什么,在哪里?我知道rails提供了*。重复功能。这能放进模型里吗?控制器吗?什么才是正确的方法呢?
谢谢!
这将是Project
类中一个很好的方法。
class Project
has_many :tasks
def duplicate
p = Project.create(name: "Copy of #{ name }")
tasks.each do |t|
p.tasks.create(name: t.name)
end
p
end
然后,要使用它,
new_project = existing_project.duplicate
deep_cloneable是什么?
deep_clone
方法支持几个选项,可以通过传递选项哈希来指定。没有选项,行为与ActiveRecord的dup
方法相同。
project.deep_clone(include: :tasks)