Rails 4 では、User などのオブジェクトをレンダリングすると、次のようになります。
{ "id" : 4 , "name" : "John" }
一方、rails-api gem を使用すると、次のようになります。
{ "user" : { "id" : 4, "name" : "John" } }
どうすればRailsにオブジェクトキーを返すようにさせることができますか?
現在、コントローラーでこれを行っています:
render json: @user
Rails 4 では、User などのオブジェクトをレンダリングすると、次のようになります。
{ "id" : 4 , "name" : "John" }
一方、rails-api gem を使用すると、次のようになります。
{ "user" : { "id" : 4, "name" : "John" } }
どうすればRailsにオブジェクトキーを返すようにさせることができますか?
現在、コントローラーでこれを行っています:
render json: @user
この動作が見られる理由を説明するには...
Rails 4 では、「ActiveModel::Serializers::JSON.include_root_in_json
デフォルト値をfalse
」 ( source ) に変更しました。
一方、rails-api
gem にはデフォルトでルート要素が含まれています。グローバルに、または呼び出しごとに簡単に無効にすることができます...ドキュメントで説明されています ここ.
あなたの「どちらがより正しいか」という質問について...
答えは主観的なものだと思います。アプリをゼロから開始する場合、使用するバックエンドが提供するデフォルトにクライアントを準拠させることになるでしょう。将来のアップグレードに対処するとき、それが最も抵抗の少ない方法のようです.