• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    浅谈Rails 4 中Strong Parameters机制

    要弄明白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参数实现参数化过程解析
    上一篇:Java版的Ruby解释器 JRuby简介
    下一篇:mac os gem安装json出现error failed的解决办法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    浅谈Rails 4 中Strong Parameters机制 浅谈,Rails,中,Strong,Parameters,