你能在Rails 3中一起使用强参数和白名单属性吗?

时间:2015-01-09 17:39:07

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

我们关注Rails 3.我们希望通过strong_parameters gem切换到强参数。

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

config.active_record.whitelist_attributes = false

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

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

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

谢谢。

2 个答案:

答案 0 :(得分:3)

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

config.active_record.whitelist_attributes = true

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

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

答案 1 :(得分:1)

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

config.active_record.whitelist_attributes = false

直到您完全迁移完毕。