2012-01-18 32 views
1

我想添加在当前现有项目上添加新项目的功能。新项目应具有所有较旧项目的任务,但某些字段应重置。如何在旧模型对象上创建新模型对象,但允许定制某些字段

我添加的模型类方法(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

“有些领域”每次都会变得一样吗? – Eric 2012-01-18 23:44:12

+0

是的,他们每次都是一样的。 – FellyTone84 2012-01-18 23:46:00

回答

4

这将创建一个除了'item_number'字段都被复制的新项目。

def self.copy(old_item)  
    Item.new(old_item.attributes.merge({:item_number => nil})) 
end 
+0

谢谢,这很有帮助。你如何建议我去允许用户输入一个自定义:item_number? – FellyTone84 2012-01-18 23:58:12

+0

这会进入控制器吗?我将如何与此链接? – oobie11 2013-12-20 19:40:04

相关问题