ruby-on-rails – Rails 3.2中克隆方法的问题

我今天试图克隆我的一个对象,但它似乎不像文档那样工作.

在我的控制台中我正在做:

u = User.find 1
nu = u.clone
nu.new_record?
   => false 
nu.new?
  NoMethodError: undefined method `new?' for #<User:0x007fbf137b8278>

所以它看起来像克隆对象只是一个副本,因为它具有与旧的相同的Id,但根据文档,它应该是新对象?

clone()

Returns a clone of the resource that hasn’t been assigned an id yet and is treated as a new resource.

ryan = Person.find(1)

not_ryan = ryan.clone

not_ryan.new? # => true

最佳答案
根据the docs自Rails 2.3.8以来已被弃用,并且可能已被删除.所以事实上你正在调用Object#clone,它曾经调用过ActiveRecord::Base#initialize_copy,它在Rails 3.0.9中删除了.

请改用dup.

转载注明原文:ruby-on-rails – Rails 3.2中克隆方法的问题 - 代码日志