Пост к рельсам с полем JSON - PullRequest
0 голосов
/ 29 июня 2018

Я пытаюсь работать с новым полем json, предлагаемым Postgres и Rails. Все, что я до сих пор делал, это генерировал этот эшафот и отключал токены CSRF по причинам тестирования:

 rails generate scaffold Shipping name content:json

Моя цель - отправлять данные следующим образом:

 curl -vX POST https://myserver.com/shipping -d '{"shipping": { "name": "test", "content" : ["test","hello"] }}' --header "Content-Type: application/json"

Это принимает имя имя, но не содержание. Есть ли правильный способ форматирования контента или есть еще проблема?

1 Ответ

0 голосов
/ 29 июня 2018

Rails отфильтрует «скалярные» параметры, которые явно не разрешены. Могу поспорить, что вы пробовали обычное строковое значение, и все работало нормально, но после отправки массива или объекта все не работает.

Чтобы все заработало, просто обновите оригинальный метод shipping_params в вашем ShippingsController с помощью этого:

def shipping_params
  params.require(:shipping).permit(:name, content: {})
end

Кстати, взгляните на документацию ActionController :: Parameters API . Я уверен, что в конечном итоге вы добавите больше атрибутов в вашу модель, и вам также понадобятся ключи для них.

Для чего это стоит: вы можете столкнуться с аналогичным методом permit! в ссылочной документации. Просто будьте осторожны, если вы а) используете атрибуты модели для принятия решений об авторизации и б) разрешаете людям, которым вы не доверяете, использовать ваш API. Последнее, что вы хотели бы сделать, - это позволить кому-то установить для столбца is_admin значение true в пользовательской модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...