2012-01-31 78 views
1

轨道是否有办法从模型实例中插入记录?像User.create(user)从对象插入记录

+1

可能与http://stackoverflow.com/questions/60033/what-is-the-easiest-way-to-duplicate-an-activerecord复制 - 记录 – Baldrick 2012-01-31 16:22:32

回答

1

假设userUser的实例,您只需使用user.save即可。 AR知道是否插入或更新。

UPDATE(见注释)

这似乎是一个创纪录的问题的克隆,所以答案是使用dup方法来创建对象的浅克隆。

+0

这不符合我的预期。出于测试目的,我尝试了以下内容:u = User.find(1); u.id = nil; u.save并且它试图更新updated_at,其中users.id是NULL,这是有道理的。我没有错吗?我从User中选择这个对象,所以它会一直尝试更新它,当我想将它作为新记录插入时。 – 2012-01-31 16:14:09

+0

你为什么把id设置为零?您通常会使用'user = User.new()'创建一个新实例,然后调用'user.save'。通过执行'find',您可以选择数据库中的现有记录,然后将id设置为nil,调用'save'将尝试保存'id' = nil的位置。哪个会炸毁。你是否想从数据库中克隆一条记录并将其保存为新记录? – Bangline 2012-01-31 16:21:15

+1

应该说如果你想克隆使用'dup'来创建re4cord的一个副本而不保存它,(Rails 3+) – Bangline 2012-01-31 16:23:28