在Rails 4中,默认情况下禁用强参数

时间:2013-08-06 23:58:39

标签: ruby-on-rails ruby-on-rails-4 strong-parameters

无论如何禁用强力参数?

我知道这是一个安全漏洞,但我真的不需要它/想要它。

6 个答案:

答案 0 :(得分:43)

关闭属性保护几乎总是一个坏主意。

有了这个强制性的说明,以下是关闭它的方法:

config.action_controller.permit_all_parameters = true

将其放在config/application.rb

答案 1 :(得分:6)

我遇到了这个问题,我试图从Stripe的webhook中存储所有参数。

如果要允许单个实例的所有参数,可以在params对象上调用#to_hash,然后再将其传递给initialize方法。

例如:

@my_object = MyObject.new(params[:my_object].to_hash)

答案 2 :(得分:4)

如果通过"禁用"你的意思是回到Rails 3式attr_accessible行,然后是。

只需使用protected_attributes gem。

答案 3 :(得分:2)

我不这么认为。

DHH评论here on this pull request to add a disable switch to strong parameters

  

所有这一切都是一个遗留问题,因为Rails 4.0会对每个人施加强大的参数,你将无法将其关闭。

答案 4 :(得分:0)

要停止为您的应用程序检查禁用的属性,您可以修补支票..

例如,

将以下代码放入

配置/初始化/ disable_strong_parameters.rb

module ActiveModel
  module ForbiddenAttributesProtection
    protected
      def sanitize_for_mass_assignment(attributes)
          attributes
      end
      alias :sanitize_forbidden_attributes :sanitize_for_mass_assignment
  end
end

答案 5 :(得分:-2)

当然可以!根据Strong Parameters的官方文档(https://github.com/rails/strong_parameters),您可以通过在config / application.rb中添加以下代码来禁用:

config.active_record.whitelist_attributes = false

它适用于我的rails 3.2