Rails 3.2中克隆方法的问题

Joh*_*hny 4 activerecord ruby-on-rails ruby-on-rails-3

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

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

u = User.find 1
nu = u.clone
nu.new_record?
   => false 
nu.new?
  NoMethodError: undefined method `new?' for #<User:0x007fbf137b8278>
Run Code Online (Sandbox Code Playgroud)

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

克隆()

返回尚未分配id的资源的克隆,并将其视为新资源.

ryan = Person.find(1)

not_ryan = ryan.clone

not_ryan.new?#=>是的

Jak*_*mpl 14

根据文档,自Rails 2.3.8以来已被弃用,并且可能已被删除.所以实际上你正在调用Object#clone,它曾经调用过在Active Rails 3.0.9中删除的ActiveRecord :: Base#initialize_copy.

请改用dup.