gpt4 book ai didi

ruby - Rails:MassAssignmentSecurity::错误

转载 作者:数据小太阳 更新时间:2023-10-29 08:51:45 26 4
gpt4 key购买 nike

正在关注 the ruby on rails guide开发人员不能批量分配 protected 字段,但在尝试这样做时不会出现异常,对吧?但在我的例子中,通过 rails 应用程序中的 new 方法批量分配不同的参数:

@edition = Edition.new params[:edition]

引发以下异常:

ActiveModel::MassAssignmentSecurity::Error: Can't mass-assign protected attributes: price

为什么?我理解错了什么吗?这是一种不获得质量分配异常的方法吗?我认为在分配之前从哈希中删除 protected 属性并不方便。

更新:版本型号:

class Edition < ActiveRecord::Base
attr_accessible :title, :description
attr_protected :price
end

params[:edition].inspect:

{"title"=>"t", "description"=>"d", "price"=>"123"}

最佳答案

您正试图通过将

@edition = Edition.new params[:edition]

这是变量的批量分配,根据您的编辑,在 params[:edition] 中,有可变价格,根据您的代码无法批量分配。

要解决此问题,您要么必须取消对价格的保护,我认为您不想这样做,要么只使用 new 批量分配未 protected 变量,然后分配 protected 变量。所以:

    @edition = Edition.new params[:edition].except("price")
@edition.price = params[:edition]['price']

@edition = Edition.new params[:edition], :without_protection => true

编辑:news.ycombinator.com/item?id=3780963 Rails 3.23 现在默认严格验证,这会引发该异常。文档已过时。

关于ruby - Rails:MassAssignmentSecurity::错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11014049/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com