【问题标题】:Rails | Mass assignment is not throwing any error and copying id of models also导轨 |批量分配不会引发任何错误,也不会复制模型的 id
【发布时间】:2018-03-15 05:10:28
【问题描述】:

最初,当我尝试这样做时:

ans = Book.new Book.last.attributes

它曾经给我一个警告:

WARNING: Can't mass-assign protected attributes for Book: id

并且创建的新对象没有复制 id。

但是现在当我从 rails 4.2.8 升级到 4.2.10 时,还升级了我的其他 gem。我没有收到任何警告,并且 id 也是从属性中复制的。我想创建一个 id 为 nil 的新对象。

为什么批量分配安全性的行为会随着 gem 升级而改变?我没有添加任何新的宝石。

【问题讨论】:

    标签: ruby-on-rails mass-assignment


    【解决方案1】:

    你可以...

    ans = Book.new Book.last.dup.attributes
    

    这将复制这本书,但将 id 设置为 nil。

    【讨论】:

    • 感谢@SteveTurczyn。我知道,它有效。但是 dup 不是正确的解决方案。 id 是一个受保护的属性,所以即使没有 dup,也不应该复制它。
    【解决方案2】:

    我不得不将 protected-attributes gem 删除或降级到以前的版本。我们使用它来允许未经允许的参数,但在新版本中,它甚至允许复制 id 和其他受保护的属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-27
      • 2021-05-26
      • 2019-11-28
      • 1970-01-01
      • 1970-01-01
      • 2016-11-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多