我想添加基于当前现有项目的新项目的功能。新项目应包含所有旧项目的任务,但应重置某些字段。
我添加的模型类方法(def self.copy(item)
)在某种工作之下,但它只是设置为完全克隆项目;我想要它克隆一些字段,让用户输入其余的数据。
例如,当我复制一个项目时,它的编号也会被复制,但我宁愿让用户输入一个唯一的编号 - 我该怎么做?
理想情况下,我想将复制功能集成到项目控制器上的新操作中,这样每次用户创建新项目时,他们都有机会将其基于数据库中当前的另一项目。 。这有意义吗?
class Task < ActiveRecord::Base
belongs_to :department
belongs_to :item
belongs_to :customer
end
class Item < ActiveRecord::Base
has_many :tasks
def self.copy(item)
newitem = item.clone
newitem.tasks << item.tasks.map(&:clone)
return newitem
end
end
答案 0 :(得分:4)
除了复制字段'item_number'之外,这将创建一个新项目。
def self.copy(old_item)
Item.new(old_item.attributes.merge({:item_number => nil}))
end