主页 > 知识库 > 浅谈Rails 4 中Strong Parameters机制

浅谈Rails 4 中Strong Parameters机制

热门标签:淮安自动外呼系统供应商 柯城手机地图如何做地图标注 外呼线路从哪里出来的 天津外呼系统怎么收费 AI电销机器人 线路 中牟外呼系统违法吗 漯河电销 征服者企业地图标注 巫师3地图标注魔力之所

要弄明白Rails 4 中Strong Parameters机制,首先我们要看看Rails3中的Parameters

在 Rails3 中创建或更新 Active Record 对象时,会有 Mass Assignment 安全问题。所以 Model 中需要列一个白名单,声明哪些属性可以被 parameter 的数据更新。

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 的机制,Model 不再负责白名单的维护,把过滤非法属性的职责推给了 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 层穿过来的数据会转化为一个 ActionController::Parameters 对象

过滤老的 ActionController::Parameters 对象,生成一个新的 ActionController::Parameters 对象。

* 只保留白名单属性
* 实例变量 @permitted  赋为 true
把过滤后的 ActionController::Parameters 对象传给 model,创建或更新对应的的 ActiveRecord 对象。
可以硬传给 model,霸王硬上弓吗?

未经 Strong Parameter 过滤的 ActionController::Parameters 对象的 @permitted 为 false(过滤后为 true)。如果硬传给 Model,会报错 ActiveModel::ForbiddenAttributesError 。

您可能感兴趣的文章:
  • MyBatis3传递多个参数(Multiple Parameters)
  • Pytorch之parameters的使用
  • Struts2源码分析之ParametersInterceptor拦截器
  • ECMAScript6函数剩余参数(Rest Parameters)
  • PowerShell函数中使用$PSBoundParameters获取输入参数列表实例
  • PDO版本问题 Invalid parameter number: no parameters were bound
  • asp.net Parameters.AddWithValue方法在SQL语句的 Where 字句中的用法
  • 基于parameters参数实现参数化过程解析

标签:西双版纳 南昌 内江 甘孜 河池 大庆 枣庄 克拉玛依

巨人网络通讯声明:本文标题《浅谈Rails 4 中Strong Parameters机制》,本文关键词  浅谈,Rails,中,Strong,Parameters,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《浅谈Rails 4 中Strong Parameters机制》相关的同类信息!
  • 本页收集关于浅谈Rails 4 中Strong Parameters机制的相关信息资讯供网民参考!
  • 推荐文章