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 に答える