Подтвердить что ты не робот

Как я могу установить include_root_in_json в false для всех моих моделей RoR?

Как я могу установить include_root_in_json в false для всех моих моделей RoR?

Я попытался установить ActiveModel:: Base.include_root_in_json = false внутри application.rb, но он не имеет никакого эффекта.

4b9b3361

Ответ 1

Метод Model.to_json используется для возврата строки JSON, представляющей модель, и я использовал self.include_root_in_json = false в самой модели.

Но для всего приложения вы можете попробовать установить ActiveModel:: Base.include_root_in_json = false в инициализаторе. [edit Это не работает.]

[edit] ActiveRecord:: Base.include_root_in_json = true попробуйте добавить эту строку в файл config/environment.rb.

Ответ 2

Я не уверен, что это верно для более поздних версий рельсов, но для меня (с запуском 2.3.5 атм) уже было объявление для этого параметра в /config/initializers/new _rails_defaults.rb, где было установлено значение

ActiveRecord::Base.include_root_in_json = true

Итак, если вы попытаетесь установить этот параметр в другом месте, это может быть переопределено.

Ответ 3

В Rails 3.2.2 это уже установлено в инициализаторах:

--- config/initializers/wrap_parameters.rb ---

# Disable root element in JSON by default.
ActiveSupport.on_load(:active_record) do
  self.include_root_in_json = false
end

Ответ 4

Для системной конфигурации по умолчанию всегда рекомендуется устанавливать переменную в инициализаторы, например config/initializers/defaults.rb

Ответ 5

Я думаю, вы должны установить ActiveRecord:: Base.include_root_in_json = false в config/application.rb

не ActiveModel:: Base

Ответ 6

В Rails 4 в "config/initializers/wrap_elements.rb" вы можете раскомментировать следующее:

ActiveSupport.on_load(:active_record) do
 self.include_root_in_json = true
end