Rails控制台:使用现有记录创建新记录

时间:2020-10-20 22:09:07

标签: ruby-on-rails rails-console

最近,我不得不根据以前的记录在非Rails应用数据库表中创建几个记录。我想到了如何在Rails应用程序中执行此操作。我在控制台中尝试了几件事,但没有任何效果。

我想做这样的事情:

001> user = User.new(User.first)

我知道这行不通,但希望它将告诉您我的想法。 User是一个大表/模型,我只需要更改一些字段。因此,如果我可以在new中设置具有相同值的User.first记录,那么我可以在.save-添加记录之前编辑所需的字段。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我认为您想要的是

user = User.first.dup
user.assign_attributes(email: "myemail@test.test")
user.save

第一行使用dup创建对象的副本。该副本尚未保存到数据库。 Replace dup with clone if you're using an old version of Rails (<3.1)

在第二行中,assign_attributes更改对象的属性,但仍不将其保存到数据库。如果要使用已保存在数据库中的对象,则可以使用update而不是assign_attributes来更改对象的属性并一次性保存更改。这在这里不起作用,因为我们还没有保存重复的用户。 More details on that here.

第三行最后将新对象保存到数据库。最后,这样做一次可以节省时间。

相关问题