2015-05-02 2 views
1

В настоящее время я использую ниже, чтобы добавить один продукт с именем и брендом через вызов API. Я хотел бы иметь возможность отправить массив «продуктов», а затем добавить в свою БД.POST/Создать несколько элементов

Может ли кто-нибудь предложить:
1) Как бы это сделать в контроллере?
2) Как бы я структурировал тело API POST?

Текущий вызов выглядит следующим образом:

http://localhost:3000/api/v1/products?brand=brand&name=name 

Мой контроллер:

def create 
     @newProduct = Product.create(product_params) 
     if @newProduct.save 
      render json: {message: "Product created"} 
     else 
      render json: {error: "Failed to create product"} 
     end 
    end 

    private 

    def product_params 
     params.permit(:name, :brand) 
    end 

Благодаря

ответ

0

Добавить новый маршрут маршруты файл с линией ниже

get 'create_multiple_products' 

Отправить данные в массиве

{"products":[ 
    {"name":"playstation"}, 
    {"name":"xbox"}, 
    {"name":"blueray"} 
]} 

затем добавить новый метод в контроллере и вызвать создание в цикле

def create_multiple_products 
    response["products"].each do |p| 
     Product.create( p) 
    end 
    end 

выше псевдокод, вы можете попробовать настройки ожидаемого апи и сопрягать ориентированный подход тест с вернулся данные с rspec. http://matthewlehner.net/rails-api-testing-guidelines/

+0

Спасибо, я отдам его. – Geraint

Смежные вопросы