我们关注Rails 3.我们希望通过strong_parameters gem切换到强参数。
gem的文档说明要使用此gem,需要在true
文件中将以下值从false
更改为config/application.rb
config.active_record.whitelist_attributes = false
我们的应用程序中有许多模型和控制器。进行此更改意味着我们必须将所有模型和控制器迁移到强参数?
理想情况下,我们希望逐渐迁移。也就是说,开始为新模型和控制器使用强参数,然后逐步更新所有模型和控制器。
那么你可以为某些模型/控制器使用强参数,为其他模型/控制器使用白名单属性吗?
谢谢。
答案 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
直到您完全迁移完毕。