rails modelos link_to ruby-on-rails ruby-on-rails-3 json activemodel

ruby on rails - link_to - ¿Cómo puedo configurar include_root_in_json en falso para todos mis modelos RoR?



modelos ruby on rails (6)

¿Cómo puedo configurar include_root_in_json en falso para todos mis modelos RoR?

He intentado configurar ActiveModel :: Base.include_root_in_json = false dentro de application.rb, pero no tiene ningún efecto.


Creo que deberías configurar ActiveRecord :: Base.include_root_in_json = false en config / application.rb

no ActiveModel :: Base


El método Model.to_json se usa para devolver una cadena JSON que representa el modelo y yo he usado self.include_root_in_json = false en un modelo en sí mismo.

Pero para toda la aplicación, puedes intentar configurar ActiveModel :: Base.include_root_in_json = false en un inicializador. [Editar Esto no funciona.]

[edit] ActiveRecord :: Base.include_root_in_json = true intenta agregar esta línea al archivo config / environment.rb.


En Rails 3.2.2, esto ya está configurado en los inicializadores:

--- 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


En Rails 4 en "config / initializers / wrap_elements.rb" puede descomentar lo siguiente:

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


No estoy seguro de que esto sea cierto para las versiones posteriores de los rieles, pero para mí (con una versión de 2.3.5 atm) ya había una declaración para esta configuración en /config/initializers/new_rails_defaults.rb donde se estableció en:

ActiveRecord::Base.include_root_in_json = true

Por lo tanto, si intenta establecer esta configuración en otro lugar, es posible que se anule.


Para la configuración de todo el sistema por defecto, siempre es una buena idea establecer una variable en los inicializadores, como config / initializers / defaults.rb