在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
属性并继续它的业务。 documentation使我看起来应该能够做到这一点,但我一直得到这个例外而且它真的让我感觉到,因为我做错了或文档错了。
我很乐意为此提供帮助。
答案 0 :(得分:3)
您可以通过设置Player.mass_assignment_sanitizer
(或在ActiveRecord::Base
上将其设置为适用于所有AR模型)来配置群发作业时您想要发生的事情。
您也可以通过config.active_record.mass_assignment_sanitizer
我们可以将其设置为:logger
,它只会在发生这些事情时记录,或者:strict
会引发异常。您还可以提供自己的定制消毒剂。当前的应用程序模板将其设置为严格,尽管使用的情况并非如此
答案 1 :(得分:2)
在development.rb
中注释掉这一行:
config.active_record.mass_assignment_sanitizer = :strict
严格设置会引发错误,默认设置只会记录警告。