【问题标题】:Rails 3.2.12 Can't mass-assign protected attributesRails 3.2.12 无法批量分配受保护的属性
【发布时间】:2016-04-26 09:06:15
【问题描述】:

这是我的 RubyOnRails 应用程序。我有一个 ActiveRecord:

class Deposit < ActiveRecord::Base
    attr_accessible :fk, :abs_kod, :neres
    ...
end

我还有一个带有代码的控制器:

list.each do |d_item|
      deposit = Deposit.find_or_create_by_fk(d_item[:fk])
      deposit.update_attributes d_item
end

但我无法将任何值保存到“neres”字段中。我遇到了错误

Can't mass-assign protected attributes: neres

在我的数据库中我看到了

|  fk  | abs_kod |  neres |
|  1   | 1       |        |

我试着这样做

deposit = Deposit.find_or_create_by_fk(d_item[:fk])
deposit.neres = d_item[:neres]
deposit.update_attributes d_item
deposit.neres = d_item[:neres] //twice, just in case

我没有帮助。我还尝试从活动记录中删除 attr_accessible 。它也没有帮助。有什么问题?

P.S.:属性“neres”是在“abs_kod”和“fk”之后添加的。

【问题讨论】:

    标签: ruby-on-rails activerecord mass-assignment


    【解决方案1】:

    要在低于版本 4 的 Rails 应用程序中使用强参数,您需要将 gem 添加到 gem 文件中

    gem 'strong_parameters'
    

    并在配置中的 application.rb 文件中将 whitelist_attributes 设置为 false

    config.active_record.whitelist_attributes = false
    

    在控制器中,一定要添加一个model_params方法,并列出需要列入白名单的属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-04
      • 1970-01-01
      相关资源
      最近更新 更多