a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > Ruby > 正文

淺談Rails 4 中Strong Parameters機制

2020-10-29 19:45:06
字體:
來源:轉載
供稿:網友

要弄明白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 。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产日韩一区二区 | 国产精品久久久久久久久久久久久久 | 欧美不卡激情三级在线观看 | 91久久九色 | 国产最新视频在线 | 久久不卡 | 欧美一区二区在线视频 | 国产精品久久嫩一区二区免费 | 国产一级在线观看 | 久久免费精品视频 | 久久久在线视频 | 黄色亚洲| 国产免费一级片 | 欧美不卡激情三级在线观看 | 久久99国产精一区二区三区 | 久久国产精彩视频 | 欧美精品三区 | 欧美一区永久视频免费观看 | 国产免费一区二区 | www.色综合 | 蜜桃视频成人m3u8 | 国产精品久久久久久亚洲调教 | 91在线一区二区 | 日韩视频精品 | 97色涩 | 亚洲午夜精品视频 | 性大毛片视频 | 羞羞视频免费网站 | 一级毛片观看 | 日韩高清在线一区 | 男人天堂a | www.99国产| 婷婷欧美 | 中文字幕国产一区 | 欧美日韩在线精品 | 国产精品美女久久久久久久久久久 | 国产91网址 | 欧美精品福利视频 | 日韩免费一级 | 久久久久久国产精品美女 | 国产va |