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

首頁(yè) > 編程 > Ruby > 正文

淺談Rails 4 中Strong Parameters機(jī)制

2020-10-29 19:45:06
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

要弄明白R(shí)ails 4 中Strong Parameters機(jī)制,首先我們要看看Rails3中的Parameters

在 Rails3 中創(chuàng)建或更新 Active Record 對(duì)象時(shí),會(huì)有 Mass Assignment 安全問(wèn)題。所以 Model 中需要列一個(gè)白名單,聲明哪些屬性可以被 parameter 的數(shù)據(jù)更新。

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 的機(jī)制,Model 不再負(fù)責(zé)白名單的維護(hù),把過(guò)濾非法屬性的職責(zé)推給了 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?

 

說(shuō)白了 Strong Parameter 其是就是一層白名單過(guò)濾。

View 層穿過(guò)來(lái)的數(shù)據(jù)會(huì)轉(zhuǎn)化為一個(gè) ActionController::Parameters 對(duì)象

過(guò)濾老的 ActionController::Parameters 對(duì)象,生成一個(gè)新的 ActionController::Parameters 對(duì)象。

* 只保留白名單屬性
* 實(shí)例變量 @permitted  賦為 true
把過(guò)濾后的 ActionController::Parameters 對(duì)象傳給 model,創(chuàng)建或更新對(duì)應(yīng)的的 ActiveRecord 對(duì)象。
可以硬傳給 model,霸王硬上弓嗎?

未經(jīng) Strong Parameter 過(guò)濾的 ActionController::Parameters 對(duì)象的 @permitted 為 false(過(guò)濾后為 true)。如果硬傳給 Model,會(huì)報(bào)錯(cuò) ActiveModel::ForbiddenAttributesError 。

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 英德市| 慈溪市| 中牟县| 甘孜县| 长寿区| 凤山市| 枣阳市| 武定县| 连南| 潞城市| 满洲里市| 图片| 浙江省| 依安县| 花垣县| 桓台县| 石景山区| 湾仔区| 莱西市| 梁河县| 翼城县| 绍兴县| 尤溪县| 恩施市| 西昌市| 石柱| 叶城县| 龙胜| 呈贡县| 衡南县| 宝丰县| 泗阳县| 呈贡县| 云霄县| 雷波县| 旺苍县| 古丈县| 巫溪县| 普格县| 上饶市| 宝清县|