Как я могу установить include_root_in_json в false для всех моих моделей RoR?
Как я могу установить include_root_in_json в false для всех моих моделей RoR?
Я попытался установить ActiveModel:: Base.include_root_in_json = false внутри application.rb, но он не имеет никакого эффекта.
Ответ 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