すべてのRoRモデルでinclude_root_in_jsonをfalseに設定するにはどうすればよいですか?
application.rb内でActiveModel::Base.include_root_in_json = falseを設定しようとしましたが、効果がありません。
すべてのRoRモデルでinclude_root_in_jsonをfalseに設定するにはどうすればよいですか?
application.rb内でActiveModel::Base.include_root_in_json = falseを設定しようとしましたが、効果がありません。
Model.to_jsonメソッドは、モデルを表すJSON文字列を返すために使用さ れ、モデル自体でself.include_root_in_json=falseを使用しました。
ただし、アプリケーション全体で、初期化子でActiveModel :: Base.include_root_in_json=falseを設定してみることができます。[編集これは機能しません。]
[編集] ActiveRecord:: Base.include_root_in_json=trueこの行をconfig/environment.rbファイルに追加してみてください。
これが後のバージョンのrailsに当てはまるかどうかはわかりませんが、私(2.3.5 atmを実行)の場合、この設定の宣言は/config/initializers/new_rails_defaults.rbにすでに設定されていました。
ActiveRecord::Base.include_root_in_json = true
したがって、この設定を別の場所で設定しようとすると、オーバーライドされる可能性があります。
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
デフォルトのシステム全体の構成では、config / initializers/defaults.rbなどの初期化子で変数を設定することをお勧めします。
config/application.rb で ActiveRecord::Base.include_root_in_json = false を設定する必要があると思います
ActiveModel::Base ではありません
「config/initializers/wrap_elements.rb」の Rails 4 では、次のコメントを外すことができます。
ActiveSupport.on_load(:active_record) do
self.include_root_in_json = true
end