Mam w mojej aplikacji model Backbone, który nie jest typowym płaskim obiektem, jest to duży obiekt zagnieżdżony i przechowujemy zagnieżdżone części w kolumnach TEXT w bazie danych MySQL.Railsy konwertują puste tablice na nils w params żądania
Chciałem obsłużyć kodowanie/dekodowanie JSON w Rails API tak, że z zewnątrz wygląda na to, że możesz POST/GET ten jeden zagnieżdżony obiekt JSON, nawet jeśli jego części są przechowywane jako napisy JSON.
Jednak napotkałem problem, w którym Railsy w magiczny sposób konwertują puste tablice na wartości nil
. Na przykład, jeśli POST to:
{
name: "foo",
surname: "bar",
nested_json: {
complicated: []
}
}
Mój kontroler Rails widzi to:
{
:name => "foo",
:surname => "bar",
:nested_json => {
:complicated => nil
}
}
A więc moje dane JSON został zmieniony ..
ktoś napotkasz ten problem wcześniej? Dlaczego Railsy modyfikowały moje dane POST?
UPDATE
Tutaj jest gdzie zrobić:
https://github.com/rails/rails/blob/master/actionpack/lib/action_dispatch/http/request.rb#L288
A oto ~ dlaczego oni to robią:
https://github.com/rails/rails/pull/8862
Więc teraz jest pytanie , jak najlepiej sobie z tym poradzić w mojej sytuacji zagnieżdżonego interfejsu JSON API?
Znalazłem, gdzie to robi deep_munge https://github.com/rails/rails/blob/master/actionpack/lib/action_dispatch/http/request.rb#L288. Nadal nie wiem, dlaczego to robi. – Karolis
Linki do master/actionpack nie wskazują już właściwej linii. Link do tagu lub commit. –