В скрипте / консоли это работает для меня
>> i = Item.find(:first)
=> #<Item id: 1, name: "Item 1", description: "This is item 1!", created_at: "2010-01-03 21:51:49", updated_at: "2010-01-05 18:25:42">
>> i2 = i.clone
=> #<Item id: nil, name: "Item 1", description: "This is item 1!", created_at: "2010-01-03 21:51:49", updated_at: "2010-01-05 18:25:42">
>> i2.save
=> true
>> i2
=> #<Item id: 2, name: "Item 1", description: "This is item 1!", created_at: "2010-01-03 21:51:49", updated_at: "2010-01-05 18:25:42">
Клонирование действительно не увеличивает поле id (логично, так как это действие базы данных). После сохранения элемента идентификатор теперь обновляется, и моя база данных содержит клон.
Так что должно работать ... Вы также можете попробовать это в своей консоли, чтобы посмотреть, работает ли оно также или оно не работает, как в вашем примере. Вы также можете разбить первую строку, поэтому найдите оригинал и клонируйте его в новую переменную и выведите (logger.debug @item.inspect
) на консоль, чтобы увидеть, успешно ли клонирование. Также напечатайте клонированный объект после сохранения, чтобы увидеть, изменились ли вещи или нет.