Пожалуйста, объясните это или предоставьте более правильное решение.
class Store < ApplicationRecord
has_and_belongs_to_many :books
end
class Book < ApplicationRecord
has_and_belongs_to_many :stores
end
У меня есть несколько книг в базе данных.Я хотел бы создать новый магазин с несколькими книгами.
Следующие несколько команд curl приводят к тому, что Rails анализирует пустой массив для params [book_ids]:
curl -F "author[book_ids[]]=[1,2]" -F "author[description]=some description" localhost:3000/authors.multipart
Started POST "/authors.multipart" for 127.0.0.1 at ...
Processing by AuthorsController#create as MULTIPART
Parameters: {"author"=>{"gesture_ids"=>[], "description"=>"some description", @headers ...
curl -F "author[book_ids[]]=\"[1,2]\"" -F "author[description]=some description" localhost:3000/authors.multipart
Started POST "/authors.multipart" for 127.0.0.1 at ...
Processing by AuthorsController#create as MULTIPART
Parameters: {"author"=>{"gesture_ids"=>[], "description"=>"some description", @headers ...
curl -F "author[book_ids[]]=1" -F "author[book_ids[]]=2" -F "author[description]=some description" localhost:3000/authors.multipart
Started POST "/authors.multipart" for 127.0.0.1 at ...
Processing by AuthorsController#create as MULTIPART
Parameters: {"author"=>{"gesture_ids"=>[], "description"=>"some description", @headers ...
Носледующая команда добивается цели:
curl -F "author[book_ids[]=1" -F "author[book_ids[]=2" -F "author[description]=some description" localhost:3000/authors.multipart
Started POST "/authors.multipart" for 127.0.0.1 at ...
Processing by AuthorsController#create as MULTIPART
Parameters: {"author"=>{"gesture_ids"=>["1","2"], "description"=>"some description", @headers ...
Как видите, команда пропускает правую скобку в нескольких местах, но она работает.Проверяя след, Керл действительно отправляет следующее для первой книги.
0000: HTTP/1.1 100 Continue
=> Send data, 502 bytes (0x1f6)
0000: --------------------------538dd4bc2333141c
002c: Content-Disposition: form-data; name="store[book_ids[]"
0068:
006a: 1
006f: --------------------------538dd4bc2333141c