【问题标题】:Can you use strong parameters and whitelist attributes together in Rails 3?你可以在 Rails 3 中同时使用强参数和白名单属性吗?
【发布时间】:2015-01-09 17:39:07
【问题描述】:

我们正在使用 Rails 3。我们想通过 strong_parameters gem 切换到强参数。

gem 的文档说要使用这个gem,需要在config/application.rb 文件中将以下值从true 更改为false

config.active_record.whitelist_attributes = false

我们的应用程序中有许多模型和控制器。进行此更改意味着我们必须将所有模型和控制器迁移到强参数?

理想情况下,我们希望逐步迁移。即,开始为新模型和控制器使用强参数,然后逐步更新所有模型和控制器。

那么您可以为某些模型/控制器使用强参数并为其他模型/控制器使用白名单属性吗?

谢谢。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2 strong-parameters


    【解决方案1】:

    我刚开始这样做。我的经验是我可以启用自动白名单:

    config.active_record.whitelist_attributes = true
    

    然后我需要使用attr_protected 显式禁用要迁移到强参数的模型中的白名单:

    class Widget < ActiveRecord::Base
      attr_protected # disable whitelist in this model
      include ActiveModel::ForbiddenAttributesProtection
      ...
    end
    

    【讨论】:

      【解决方案2】:

      是的,您可以同时使用两者。您可以简单地将ActiveModel::ForbiddenAttributesProtection 模块混合到要迁移到强参数的模型中,同时通过attr_accessible 在其他模型中保留白名单。只是在完成完全转换之前不要禁用白名单默认设置。换句话说,不要设置这个

      config.active_record.whitelist_attributes = false
      

      直到你完全迁移过来。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-31
        • 2013-09-10
        • 2023-03-19
        • 2019-08-21
        • 2016-12-20
        相关资源
        最近更新 更多