2015-10-15 57 views
0

我有一个使用脚手架在rails中生成的rails api。 我在这个API中有一个产品模型。为了测试我的API,我创建使用curl的产品,目前我可以一次使用curl命令如何使用单个POST请求在Rails中创建多个记录?

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)帮助如何修改我的创建功能(这是从脚手架生成),以便它可以创建接受的产品阵列(数组的长度是可变的)并为他们创造

2)多个记录要传递什么散列数据的卷曲测试中实现的功能

+1

创建方法可以采取散列的阵列,并且将尝试基于散列的属性来创建每个对象,http://api.rubyonrails.org/classes/ActiveRecord/Persistence/ClassMethods.html#方法 - 我创建 – Swards

+0

可能的重复[INSERT多个记录在rails活动记录上使用ruby](http://stackoverflow.com/questions/10022178/insert-multiple-records-using-ruby-on-rails-active-record ) –

+0

你能告诉我应该如何在json散列中传递多个产品的数组? –

回答

0

在ActiveRecord的#源创建方法,你可以看到,它遍历数组。你可以自己做这样的事情来包含强大的参数。

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 
相关问题