これを行うには、Rails のモンキー パッチを適用する必要があります。ただし、ユーザーが一括割り当てを試みた場合にアプリでエラーが発生しないようにするため、このコードは開発および/またはテストでのみ使用してください。に次を追加しますconfig/initializers/error_mass_assign.rb
。
module ActiveModel
module MassAssignmentSecurity
module Sanitizer
protected
def warn!(attrs)
self.logger.debug "WARNING: Can't mass-assign protected attributes: #{attrs.join(', ')}" if self.logger
raise(RuntimeError, "Mass assignment error") if ['test', 'development'].include?(Rails.env)
end
end
end
end
これにより、通常の警告が発生しますが、テストおよび開発環境で保護された属性が一括割り当てされると、「一括割り当てエラー」というメッセージとともに RuntimeError も発生します。別の例外が必要な場合は、上記のコードのエラー メッセージまたはエラーを変更することもできます。
これを有効にするには、必ずコンソールまたはサーバーを再起動してください。
PS: Rails 2 では、次のことを行う必要があります。
module ActiveRecord
class Base
def log_protected_attribute_removal(*attributes)
logger.debug "WARNING: Can't mass-assign these protected attributes: #{attributes.join(', ')}"
raise(RuntimeError, "Mass assignment error")
end
end
end