class Item
include DataMapper::Resource
property :id, Serial
property :title, String
end
item = Item.new(:title => 'Title 1') # :id => 1
item.save
item_clone = Item.first(:id => 1).clone
item_clone.save
# => <Item @id=1 @title="Title 1" ...
这确实按照描述“克隆”了对象,但是如何这样做,以便在保存记录后应用不同的ID,例如,
# => <Item @id=2 @title="Title 1" ...
答案 0 :(得分:7)
clone
会给你一个对象副本,这不是你想要的 - 你只想复制数据库中的记录,对吗?我过去使用DM的方式是这样的:
new_attributes = item.attributes
new_attributes.delete(:id)
Item.create(new_attributes)
您也可以在一行中完成:
Item.create(item.attributes.merge(:id => nil))