主頁 > 知識庫 > 淺談Rails 4 中Strong Parameters機(jī)制

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

熱門標(biāo)簽:淮安自動外呼系統(tǒng)供應(yīng)商 柯城手機(jī)地圖如何做地圖標(biāo)注 外呼線路從哪里出來的 天津外呼系統(tǒng)怎么收費(fèi) AI電銷機(jī)器人 線路 中牟外呼系統(tǒng)違法嗎 漯河電銷 征服者企業(yè)地圖標(biāo)注 巫師3地圖標(biāo)注魔力之所

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

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

Rails 3

# kings_controller.rb
def create
 #{ name: ‘David', sex:male, age: 31}
 @king = King.new(params[:king])
 if @king.save
  redirect_to @king
 else
  render 'new'
 end
end


# king.rb
class King
 attr_accessible :name
end

Rails 4

Rails 4 引入了 Strong Parameters 的機(jī)制,Model 不再負(fù)責(zé)白名單的維護(hù),把過濾非法屬性的職責(zé)推給了 Controller。

# kings_controller.rb
def create
 # new parameter { name: ‘David' }
 @king = King.new(king_params)
 if @king.save
  redirect_to @king
 else
  render 'new'
 end
end

private

def king_params
 # old parameter { name: ‘David', sex:male, age: 31}
 # new parameter { name: ‘David' }
 params[:king].permit(:name)
end


# king.rb
class King

end 

什么是 Strong Parameters?

 

說白了 Strong Parameter 其是就是一層白名單過濾。

View 層穿過來的數(shù)據(jù)會轉(zhuǎn)化為一個(gè) ActionController::Parameters 對象

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

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

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

您可能感興趣的文章:
  • MyBatis3傳遞多個(gè)參數(shù)(Multiple Parameters)
  • Pytorch之parameters的使用
  • Struts2源碼分析之ParametersInterceptor攔截器
  • ECMAScript6函數(shù)剩余參數(shù)(Rest Parameters)
  • PowerShell函數(shù)中使用$PSBoundParameters獲取輸入?yún)?shù)列表實(shí)例
  • PDO版本問題 Invalid parameter number: no parameters were bound
  • asp.net Parameters.AddWithValue方法在SQL語句的 Where 字句中的用法
  • 基于parameters參數(shù)實(shí)現(xiàn)參數(shù)化過程解析

標(biāo)簽:西雙版納 南昌 內(nèi)江 甘孜 河池 大慶 棗莊 克拉瑪依

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《淺談Rails 4 中Strong Parameters機(jī)制》,本文關(guān)鍵詞  淺談,Rails,中,Strong,Parameters,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《淺談Rails 4 中Strong Parameters機(jī)制》相關(guān)的同類信息!
  • 本頁收集關(guān)于淺談Rails 4 中Strong Parameters機(jī)制的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章