加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-17 04:05:33 所属栏目:百科 来源:网络整理
导读:我今天试图克隆我的一个对象,但它似乎不像文档那样工作. 在我的控制台中我正在做: u = User.find 1nu = u.clonenu.new_record? = false nu.new? NoMethodError: undefined method `new?' for #User:0x007fbf137b8278 所以它看起来像克隆对象只是一个副本,因
我今天试图克隆我的一个对象,但它似乎不像文档那样工作.

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

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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读