淺談Rails 4 中Strong Parameters機制
来源:互联网 发布:mac 配置ant 编辑:程序博客网 时间:2024/04/19 04:22
要弄明白Rails 4 中Strong Parameters機制,首先我們要看看Rails3中的Parameters
在 Rails3 中創建或更新 Active Record 對象時,會有 Mass Assignment 安全問題。所以 Model 中需要列一個白名單,聲明哪些屬性可以被 parameter 的數據更新。
Rails 3
# kings_controller.rbdef create#{ name: 『David', sex:male, age: 31}@king = King.new(params[:king])if @king.saveredirect_to @kingelserender 'new'endend# king.rbclass Kingattr_accessible :nameend
Rails 4
Rails 4 引入了 Strong Parameters 的機制,Model 不再負責白名單的維護,把過濾非法屬性的職責推給了 Controller。
# kings_controller.rbdef create# new parameter { name: 『David' }@king = King.new(king_params)if @king.saveredirect_to @kingelserender 'new'endendprivatedef king_params# old parameter { name: 『David', sex:male, age: 31}# new parameter { name: 『David' }params[:king].permit(:name)end# king.rbclass Kingend
什麼是 Strong Parameters?
說白了 Strong Parameter 其是就是一層白名單過濾。
View 層穿過來的數據會轉化為一個 ActionController::Parameters 對象
過濾老的 ActionController::Parameters 對象,生成一個新的 ActionController::Parameters 對象。
* 只保留白名單屬性
* 實例變數 @permitted 賦為 true
把過濾後的 ActionController::Parameters 對象傳給 model,創建或更新對應的的 ActiveRecord 對象。
可以硬傳給 model,霸王硬上弓嗎?
未經 Strong Parameter 過濾的 ActionController::Parameters 對象的 @permitted 為 false(過濾後為 true)。如果硬傳給 Model,會報錯 ActiveModel::ForbiddenAttributesError 。
- 淺談Rails 4 中Strong Parameters機制
- 浅谈Rails 4 中Strong Parameters机制
- ARC 中 Strong,Weak
- Rails 3 与 Rails 4 中 try 方法的不同
- Rails 3 与 Rails 4 中 try 方法的不同
- Parameters
- Parameters
- Parameters
- parameters
- OC中weak/assign/strong
- 强参数 Strong parameters: Dealing with mass assignment in the controller instead of the model
- rails 4 中 在 ActiveRecord 中指定表名
- rails 4 中 在 ActiveRecord 中指定表名
- Rails 4中document.ready失效
- 【Rails】在Rails中使用Gravatar
- 【Rails】在Rails中使用Gravatar
- rails中使用bleak_house
- Rails中delegate用法
- Ruby中的迭代器詳解
- CSS打造的边框折角效果
- 数组与指针
- 经典算法之Isomorphic Strings
- socket中send函数和recv函数的理解
- 淺談Rails 4 中Strong Parameters機制
- 巧克力爱好者匿名用例图 小组成员:张猛 李轩 张雨 谷雨 韩蕊
- 常见面试之机器学习算法思想简单梳理(进阶版)
- 邮票分你一半
- 第六届蓝桥杯java试题-九数组分数
- 在hadoop2.4集群环境下安装spark
- protocol、category和继承的区别
- 经典算法题之Happy Number
- android组件之service