有没有办法在不保存的情况下批量分配现有记录?

时间:2014-05-23 19:33:19

标签: ruby-on-rails ruby-on-rails-4 rails-activerecord

我有一个ProductsColor模型。给定一个params哈希,有没有办法用一种方法设置现有记录的属性而不保存它?类似于ProductsColor.new(params)实例化一个对象并将其属性设置为params哈希值中的那些,我想设置现有记录的属性而不保存它:

    params = {name: "hey"}

    p = ProductsColor.find(1)
    p.something(params) # does not save to the database, but does set the value of the params to p in memory
    p.name # "hey"
    p.save # <-- now it saves permanently

3 个答案:

答案 0 :(得分:5)

你可以这样做:

p = ProductsColor.find(1)
p.assign_attributes(params)

不会保存

答案 1 :(得分:1)

您正在寻找的是:

  

assign_attributes

将更新属性而不保存记录。

查看此答案以获取更多信息:

Rails update_attributes without save?

答案 2 :(得分:0)

有一个名为assign_attributes的活动记录方法,用于为活动记录对象分配属性。它应该是下面的内容,

products_color = ProductsColor.first
products_color.assign_attributes({name: 'New name'})