在Rails初始化器中设置ActionController::Parameters.permit_all_parameters=true无效
Rails中ActionController::Parameters.permit_all_parameters设置无效的排查与解决
可能的原因及解决方法
1. 使用了错误的设置方式
直接修改ActionController::Parameters.permit_all_parameters类变量可能会被Rails框架的初始化流程覆盖。正确的做法是通过Rails配置项设置:
在config/initializers/permit_all_params.rb中替换原有代码为:
Rails.application.config.action_controller.permit_all_parameters = true
2. 其他配置文件或初始化器覆盖了设置
- 检查
config/application.rb、config/environments/development.rb(或对应环境的配置文件)中是否存在config.action_controller.permit_all_parameters = false的配置,如有则删除或改为true。 - 检查其他初始化器文件,看是否有在该初始化器之后加载的文件重新设置了这个参数,调整加载顺序或修改对应代码。
3. 控制台重启不彻底
确保完全退出Rails控制台(输入exit后回车),再重新执行rails c启动控制台,之后执行以下命令验证结果:
puts ActionController::Parameters.permit_all_parameters
仅使用reload!可能无法完全加载配置变更。
4. 确认初始化器文件路径和命名正确
确保文件确实在config/initializers/目录下,文件名后缀为.rb(Rails仅加载该目录下的Ruby脚本文件),避免拼写错误导致文件未被加载。
内容的提问来源于stack exchange,提问作者Leon
相关产品推荐
相关产品推荐

