2015-10-15 2 views
0

У меня есть rails api, который я создал с помощью строительных лесов в рельсах. У меня есть модель продукта в этом апи. Для того, чтобы проверить мой апи я создаю продукты, использующие завиток, в настоящее время я могу создать только один продукт, в то время, используя локоны командыКак создать несколько записей в Rails, используя один запрос POST?

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# method-i-create – Swards

+0

Возможная дубликация [INSERT нескольких записей с использованием рубиновой записи на рельсах активной записи] (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 
Смежные вопросы