最近,我不得不根据以前的记录在非Rails应用数据库表中创建几个记录。我想到了如何在Rails应用程序中执行此操作。我在控制台中尝试了几件事,但没有任何效果。
我想做这样的事情:
001> user = User.new(User.first)
我知道这行不通,但希望它将告诉您我的想法。 User
是一个大表/模型,我只需要更改一些字段。因此,如果我可以在new
中设置具有相同值的User.first
记录,那么我可以在.save
-添加记录之前编辑所需的字段。
感谢您的帮助。
答案 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.
第三行最后将新对象保存到数据库。最后,这样做一次可以节省时间。