扶手:MassAssignmentSecurity ::错误(Rails: MassAssignme

2019-09-18 02:27发布

继在轨道上引导红宝石开发商不能大规模指派保护领域,但没有得到例外试图做到这一点,对不对? 但在我的情况下,大规模的分配通过不同PARAMS new的方法rails应用:

@edition = Edition.new params[:edition]

提高以下情况除外:

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

为什么? 我才明白什么错误? 它是一个办法不要让大众分配的例外? 这是不方便的任务,我认为之前删除哈希保护属性。

更新:版车型:

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

params[:edition].inspect

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

Answer 1:

您正试图通过把受保护的属性指定的价格在质量分配

@edition = Edition.new params[:edition]

这是变量和PARAMS一个质量分配[:版本]根据您的编辑,有变量,其价格根据你的代码不能被大众分配。

为了解决这个问题,你要么必须删除,我不认为你会想这样做或者质量只分配了新的未受保护的变量,然后指定保护的变量在价格上的保护。 所以:

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

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

编辑:news.ycombinator.com/item?id=3780963 Rails的3.23现在使验证默认情况下,这就增加了异常严格。 该文档是过时的。



文章来源: Rails: MassAssignmentSecurity::Error