Rails |批量分配不会抛出任何错误,也不会复制模型的 ID

Rails | Mass assignment is not throwing any error and copying id of models also

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

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 升级而改变?我没有添加任何新的 gem.

你可以做...

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

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

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