17

すべてのRoRモデルでinclude_root_in_jsonをfalseに設定するにはどうすればよいですか?

application.rb内でActiveModel::Base.include_root_in_json = falseを設定しようとしましたが、効果がありません。

4

6 に答える 6

12

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ファイルに追加してみてください。

于 2010-12-10T10:59:06.473 に答える
6

これが後のバージョンのrailsに当てはまるかどうかはわかりませんが、私(2.3.5 atmを実行)の場合、この設定の宣言は/config/initializers/new_rails_defaults.rbにすでに設定されていました。

ActiveRecord::Base.include_root_in_json = true

したがって、この設定を別の場所で設定しようとすると、オーバーライドされる可能性があります。

于 2010-12-10T10:56:01.733 に答える
2

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
于 2012-09-21T01:22:24.080 に答える
1

デフォルトのシステム全体の構成では、config / initializers/defaults.rbなどの初期化子で変数を設定することをお勧めします。

于 2010-12-10T10:50:20.297 に答える
1

config/application.rb で ActiveRecord::Base.include_root_in_json = false を設定する必要があると思います

ActiveModel::Base ではありません

于 2011-07-06T07:35:15.300 に答える
0

「config/initializers/wrap_elements.rb」の Rails 4 では、次のコメントを外すことができます。

ActiveSupport.on_load(:active_record) do
 self.include_root_in_json = true
end 
于 2015-11-14T14:02:53.567 に答える