加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如何使用对象数组执行强参数

发布时间:2020-12-17 02:26:11 所属栏目:百科 来源:网络整理
导读:如果我有一个用户 def user_params params.require(:user).permit(:name,:age)end 我明白了.我想批量创建用户.因此,用户可以填写用户的列表(理论上无穷无尽),他们会进来: [{name: "name",age: 12},{name: "name",age: 22},age: 32}] 问题是,我如何使用强参
如果我有一个用户

def user_params
    params.require(:user).permit(:name,:age)
end

我明白了.我想批量创建用户.因此,用户可以填写用户的列表(理论上无穷无尽),他们会进来:

[{name: "name",age: 12},{name: "name",age: 22},age: 32}]

问题是,我如何使用强参数?我知道我可以循环遍历数组并创建记录,我明白了.我的理解是,强大的params通常是一个好主意,安全明智.

什么是强大的障碍保护我?如果我只是对用户数组进行循环,那么我将在这里打开自己的什么?如何使用强力参数或其他方法正确完成?

解决方法

强大参数的全部要点(在rails 4中引入),目的是保护应用程序免受 mass assignment个漏洞的攻击.例如,假设您有一个User模型,它有一个admin属性.如果您在理论上使用质量分配,如果您没有过滤掉某些内容,那么有人可能会为admin属性赋值;见下文

class UserController < ApplicationController

  def create
    #{name: 'Joe',score: 7,title: 'Mr',admin: true} params hash
    User.create(params)
  end
end

现在,如果你的应用程序的用户如何传递这些值,他们只是自己和管理员,并可以随心所欲.这就是为什么你会使用强params来做到这一点.

class UserController < ApplicationController

  def create
    User.create(user_params)
  end

  def user_params
    params.require(:name).permit(:title,:score)  #noticed admin is not allowed
  end
end

现在要创建具有强params的多个记录,您可以执行此操作

class UserController < ApplicationController

  def create
    user_params[:users].each do |u|
      User.create(u)
    end
  end

  def user_params
    params.permit(:users,array: [:name,:age])
  end
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读