Сильные параметры: как разрешить хэш произвольно структурированных хешей - PullRequest
0 голосов
/ 09 апреля 2019

Я хочу разрешить параметр queries.Но я знаю только, что это хеш с вложенными хешами внутри.Я не знаю, какие ключи внутри него.Например, это может выглядеть следующим образом:

Started PATCH "/en/foos/5ca7a1b883c336410fb0923c" for 127.0.0.1 at 2019-04-09 09:13:46 +0200
Processing by FoosController#update as JS
  Parameters: {"queries"=>"{\r\n  \"query1\": {\r\n    \"query\" : {\r\n      \"order_number\" : {\r\n        \"$in\" : [\"1\", \"2\"]\r\n      },\r\n      \"name\" : \"Batman\"\r\n    },\r\n    \"projection\" : {\r\n      \"_id\" : 1,\r\n      \"order_number\" : 1\r\n    },\r\n    \"sort\" : {\r\n      \"order_number\" : 1\r\n    }\r\n  },\r\n  \"query2\" : {\r\n  }\r\n}", "locale"=>"en", "id"=>"5ca7a1b883c336410fb0923c"}
Completed 200 OK in 15ms (Views: 0.6ms)

Мне нужно разобрать параметры перед тем, как продолжить:

params[:queries] = JSON.parse(params[:queries])
# =>
# {
#   "query1": {
#     "query": {
#       "order_number": {
#         "$in": ["1", "2"]
#       },
#       "name": "Batman"
#     },
#     "projection": {
#       "_id": 1,
#       "order_number": 1
#     },
#     "sort": {
#       "order_number": 1
#     }
#   },
#   "query2": {
#   }
# }

После анализа я хочу разрешить это, но params.permit([{queries: {}}]) don 't разрешить все вложенные хэши.

Итак, как мне просто разрешить параметр queries с любым вложенным содержимым?

...