国产探花免费观看_亚洲丰满少妇自慰呻吟_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 。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 易门县| 无极县| 甘洛县| 大田县| 长寿区| 辽阳市| 英山县| 平罗县| 阜康市| 怀柔区| 旺苍县| 寿光市| 辽中县| 康定县| 浙江省| 永德县| 凉山| 正宁县| 阿勒泰市| 阳山县| 德令哈市| 高台县| 和田县| 越西县| 包头市| 西畴县| 拜泉县| 丰镇市| 湖南省| 买车| 宣汉县| 叶城县| 麻城市| 达拉特旗| 中江县| 酒泉市| 莆田市| 盐亭县| 徐水县| 习水县| 子长县|