Rails atttr_accesible无法正常工作

时间:2012-03-16 19:15:31

标签: ruby-on-rails mass-assignment

在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使我看起来应该能够做到这一点,但我一直得到这个例外而且它真的让我感觉到,因为我做错了或文档错了。

我很乐意为此提供帮助。

2 个答案:

答案 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

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