我正在尝试制作一条新记录,它是现有记录的精确副本,但我需要新记录当然要有一个唯一的id
。含义:我不想将id
从现有记录复制到新记录。
当前代码
@blog = Blog.new(title: "some title")
@blog.save
@copy_of_existing_blog = Blog.new(@blog.attributes)
@copy_of_existing_blog.save
它返回此错误:
的ActiveRecord :: RecordNotUnique
我明白为什么会出错。它正在尝试保存具有现有记录的重复id
的记录。我只是不知道如何制作记录的精确副本,减去id
,并将其保存到数据库中。
答案 0 :(得分:9)
您需要从属性哈希中过滤掉ID。 ActiveSupport有一个方便的Hash#except
方法,它可以做到这一点:
Blog.new(@blog.attributes.except("id"))
此外,您可能还想过滤掉时间戳。