I need to duplicate a record, with the same attributes of the original except ID of cource. I do:
In the View:
<%= link_to "Duplicate", :action => "clone", :id => Some_Existing_ID %>
And in the Controller:
def clone
@item = Item.find(params[:id]).clone
if @item.save
flash[:notice] = 'Item was successfully cloned.'
else
flash[:notice] = 'ERROR: Item can\'t be cloned.'
end
redirect_to(items_path)
end
But nothing happens! In Console I figured out that clone generates the copy without ID.
Any ideas ?
*> BTW: I am running Rails 2.3.5 and Ruby 1.8
Make sure the default cloned behavior works for you. the cloned record might actually be invalid according to your validation rules.
Try to use
@item.save!instead of@item.saveand check whether an exception is raised.You can also try the code directly in a console instance.
That’s true.
#cloneactually creates a clone but doesn’t save the record.This is why you need to call a save method in your action, which is what you actually do with