我有一個模型與屬性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