克隆(即复制)一条记录。
克隆(即复制)一条记录。
我需要复制一条记录,除了课程的ID以外,其他属性与原始记录相同。我这样做:
在视图中:
<%= link_to "复制", :action => "clone", :id => Some_Existing_ID %>
在控制器中:
def clone @item = Item.find(params[:id]).clone if @item.save flash[:notice] = '成功复制该项。' else flash[:notice] = '错误:无法复制该项。' end redirect_to(items_path) end
但是什么都没有发生!在控制台上我发现clone生成的副本没有ID。
有什么想法吗?
顺便说一下:我正在运行Rails 2.3.5和Ruby 1.8。
问题:Clone(即复制)一个记录的问题的出现原因是什么?如何解决?
在Rails中,使用clone方法来复制(即克隆)一个记录是一个常见的操作。然而,从某个版本的Rails开始,这种方法已经不再支持了。现在,clone方法委托给使用Kernel#clone的方法,这将复制对象的id。这就导致了一个问题,即克隆一个记录时,新记录的id将与原记录相同,这可能会导致数据冲突和错误。
为了解决这个问题,我们需要避免使用clone方法,而是使用dup方法来复制记录。在Rails 3.1及以上版本中,可以使用以下代码来复制一个记录:
new_record = old_record.dup
通过使用dup方法,我们可以确保新记录的id与原记录不同,从而避免了数据冲突和错误的发生。