国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

淺談Rails 4 中Strong Parameters機制

2019-10-26 19:23:02
字體:
來源:轉載
供稿:網友

要弄明白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.save  redirect_to @king else  render 'new' endend# king.rbclass King attr_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.save  redirect_to @king else  render '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 。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 龙泉市| 湘潭市| 张家川| 安泽县| 嘉峪关市| 镇赉县| 会泽县| 育儿| 临颍县| 元阳县| 齐河县| 沅江市| 福安市| 本溪| 留坝县| 西华县| 宜兰县| 迭部县| 青浦区| 彭阳县| 依兰县| 文昌市| 石家庄市| 桂林市| 绥德县| 屏山县| 澜沧| 吕梁市| 尼勒克县| 于田县| 汉寿县| 明光市| 隆德县| 吉安市| 苗栗县| 邳州市| 邳州市| 阿勒泰市| 鹿泉市| 法库县| 绥中县|