如何使用单个POST请求在Rails中创建多个记录?

时间:2015-10-15 21:30:34

标签: ruby-on-rails curl activerecord

我有一个rails api,我在rails中使用脚手架生成。 我在这个API中有一个产品型号。为了测试我的api我正在使用curl创建产品,目前我只能使用curl命令一次创建一个产品

curl -i -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"product: {"name":"Felix" }}' http://localhost:3000/products.json

现在我想修改我的API,它可以从一个帖子请求创建多个产品,这样就可以执行类似的请求,我可以在一个请求中创建多个产品。

 curl -i -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{products: {"product": {"name":"Felix" }, {"product": {"name":"Felix" } }' http://localhost:3000/products.json

我需要帮助两件事

1)如何修改我的创建函数(从scaffold生成),以便它可以创建接受产品数组(数组的长度可以是变量)并为它们创建多个记录

2)要传递给curl以测试已实现的功能的数据哈希值

1 个答案:

答案 0 :(得分:-1)

在ActiveRecord #create方法的源代码中,您可以看到它循环遍历数组。你可以自己做这样的事情来包括强参数。

def create
  if params[:product].is_a? Array
    params[:product].map { |hash| Product.create(product_params(hash)) }
  else
    # normal action
  end
  # handle redirects and renders
end

private

def product_params(hash_of_params)
  # return results of strong params
end