【问题标题】:Is there a way to mass assign an existing record without saving?有没有办法在不保存的情况下批量分配现有记录?
【发布时间】:2014-07-13 06:44:43
【问题描述】:

我有一个ProductsColor 模型。给定一个参数哈希,有没有办法用一种方法设置现有记录的属性而不保存它?类似于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

【问题讨论】:

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


    【解决方案1】:

    你可以这样做:

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

    不会保存

    【讨论】:

      【解决方案2】:

      你要找的是:

      assign_attributes

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

      查看此答案了解更多信息:

      Rails update_attributes without save?

      【讨论】:

        【解决方案3】:

        有一个名为assign_attributes 的活动记录方法来为活动记录对象分配属性。应该是下面这样,

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-08-05
          • 2021-09-24
          • 1970-01-01
          • 2018-07-07
          • 2021-12-20
          • 2021-04-01
          • 2012-02-19
          • 1970-01-01
          相关资源
          最近更新 更多