Метод рубинового столбика вставить несколько строк

Как разместить несколько строк в БД, используя ruby ​​Grape. Например, при тестировании с CURL это работает нормально

curl -H "Content-Type: application/json" -X POST \
     -d '{"name": "test", "age": "22"}' http://localhost:3000/students

Но это не работает

curl -H "Content-Type: application/json" -X POST \
     -d '[{"name": "test", "age": "22"}, {"name": "someone", "age": "32" }]' \
     http://localhost:3000/students

Это мой виноградный код API

post do
      student = Student.new
      student.name = params[:name]
      student.age = params[:age]
      student.save!
end

1 ответ

Вы используете неверный синтаксис для объекта массива JSON. Попробуй это:

curl -H "Content-Type: application/json" \
     -X POST \
     -d '[{"name": "test", "age": "22"}, {"name": "someone", "age": "32" }]' \
     http://localhost:3000/students

РЕДАКТИРОВАТЬ:

Если ваша полезная нагрузка {"name": "test", "age": "22"} ваш код работает. Но у вас есть массив (params.kind_of?(Array)).

Вы можете сделать это:

post do
  params.each do |student_params|
    student = Student.new
    student.name = student_params[:name]
    student.age = student_params[:age]
    student.save!
  end
end

Объяснение:

params[:name]
# => nil
params.first[:name]
#=> test
Другие вопросы по тегам