У меня есть модель Backbone в моем приложении, которая не является типичным плоским объектом, это большой вложенный объект, и мы храним вложенные части в столбцах TEXT в базе данных MySQL.
Я хотел обрабатывать кодирование/декодирование JSON в Rails API, так что извне это выглядит так, что вы можете POST/GET этот один большой вложенный объект JSON, даже если его части хранятся как сжатый текст JSON.
Однако я столкнулся с проблемой, когда Rails волшебным образом преобразует пустые массивы в значения nil
. Например, если я ПОЧТАЮ это:
{
name: "foo",
surname: "bar",
nested_json: {
complicated: []
}
}
Контроллер My Rails видит это:
{
:name => "foo",
:surname => "bar",
:nested_json => {
:complicated => nil
}
}
И поэтому мои данные JSON были изменены.
Кто-нибудь сталкивался с этой проблемой раньше? Почему Rails меняет мои данные POST?
UPDATE
Вот где они это делают:
https://github.com/rails/rails/blob/master/actionpack/lib/action_dispatch/http/request.rb#L288
И вот почему они это делают:
https://github.com/rails/rails/pull/8862
Итак, теперь вопрос в том, как лучше всего справиться с этим в моей вложенной ситуации API JSON?