Zec*_*eck 1 ruby activerecord ruby-on-rails
我有一个带有属性id,名称,价格的模型书.我有一个Book的实例:
b1 = Book.new
b1.name = "Blah"
b1.price = 12.5
b1.save
Run Code Online (Sandbox Code Playgroud)
我想复制b1,创建Product模型的另一个实例.我是tryid p1 = b1.clone然后p1.save但它没有用.任何的想法?
我的环境是:
编辑: 我的临时产品型号:
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
Run Code Online (Sandbox Code Playgroud)
产品是创建动作:
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
Run Code Online (Sandbox Code Playgroud)
我想将所有b1的属性克隆到p1模型.
我想你想要:
b2 = Book.create(b1.attributes)
Run Code Online (Sandbox Code Playgroud)
编辑:
鉴于你create上面的动作,我想你想要做的是改变其启动线@product,以
@temporary_products.each {|tp| Admin::Product.create(tp.attributes)}
Run Code Online (Sandbox Code Playgroud)
这将为Product每个TemporaryProduct对象创建一个新对象,使用与之相同的属性TemporaryProduct.如果这不是你想要的,请告诉我.
| 归档时间: |
|
| 查看次数: |
3216 次 |
| 最近记录: |