我有一个模型与属性id,名称,价格的书。我有书的一个实例:如何复制或克隆模型?
b1 = Book.new
b1.name = "Blah"
b1.price = 12.5
b1.save
我想复制B1,创造产品型号的另一个实例。我是tryid p1 = b1.clone,然后是p1.save,但它不起作用。任何想法?
而且我的环境是:
- 的Netbeans 6.9 RC2
- 的JRuby 1.5.0
编辑: 我TemporaryProduct型号:
class Admin::TemporaryProduct < ActiveRecord::Base
def self.update_from_web_service(web_service_url)
response = HTTParty.get(web_service_url)
response["webServiceResult"]["product"].each do|element|
unless exists? :orignal_product_id => element['id']
create!(
:name => element['name'],
:price => element['price'],
:amount => element['amount'],
:description => element['description'],
:orignal_product_id => element['id'],
:image => element['image'],
:shop_account_number => element['shopAccountNumber'],
:unit => element['unit']
)
end
end
end
end
产品是创建行动:
def create
@temporary_products = Admin::TemporaryProduct.find_all_by_orignal_product_id(params[:product])
@product = Admin::Product.new(@temporary_products.attributes)
# @product = @temporary_products.clone
respond_to do |format|
format.html { redirect_to(admin_products_url, :notice => 'Admin::Product was successfully created.') }
end
end
我想将所有b1的属性克隆到p1模型。
在您发布的'create'动作中,'@ temporary_products'将是一个'Admin :: TemporaryProduct'类型的对象数组。 'attributes'是一个单一实例的方法。我不清楚您是要克隆所有结果,还是仅仅一个,或者您是否期望'find_all_by_original_product_id'只返回1个结果。 – Chowlett 2010-06-14 11:43:59
我不这么认为。它返回一个数组。 – Zeck 2010-06-14 12:01:08
是的,我知道它返回一个数组。因此'@ temporary_products.attributes'将不起作用,因为'.attributes'是*单个实例*的一种方法。你想克隆所有返回的临时产品,还是只有一个? – Chowlett 2010-06-14 12:38:00