0

在 rails 3.2.1 中,我有一个模型:

class Player < ActiveRecord::Base
  attr_accessor :password
  attr_accessible :email, :password
  attr_accessible :email, :password, :confirmed, :as => :admin
end

我不断收到ActiveModel::MassAssignmentSecurity::Error以下内容:

params[:player]
#=> {:email => "some@email.com", :password => "12345", :confirmed => true)
player = Player.new(params[:player])

当我想要它做的只是忽略该:confirmed属性并继续它的业务时,为什么会发生这种情况。文档让我看起来应该能够做到这一点,但我不断收到这个异常,它真的让我感到很不舒服,因为要么我做错了,要么文档有误。

我很乐意为此提供任何帮助。

4

2 回答 2

3

Player.mass_assignment_sanitizer您可以通过设置(或将其设置ActiveRecord::Base为适用于所有 AR 模型)来配置发生批量分配时想要发生的情况

您也可以通过以下方式在配置文件中设置它config.active_record.mass_assignment_sanitizer

我们的盒子你可以将它设置为:logger,它只记录这些事情发生或:strict引发异常的时间。您还可以提供自己的自定义消毒剂。当前的应用程序模板将其设置为严格,尽管过去并非如此

于 2012-03-16T19:33:18.853 回答
2

注释掉这一行development.rb

config.active_record.mass_assignment_sanitizer = :strict

严格设置会引发错误,默认设置只会记录警告。

于 2012-03-16T19:30:17.950 回答