22637


既存のRailsプロジェクトのAPIを作りたく下記のようなSerializerを作りました。

[code]

    class Api::V1::BaseSerializer < ActiveModel::Serializer
      def created_at
        object.created_at.in_time_zone.iso8601 if object.created_at
      end
    
      def updated_at
        object.updated_at.in_time_zone.iso8601 if object.created_at
      end
    end
    
    class Api::V1::UserSerializer < Api::V1::BaseSerializer
      attributes :id, :email, :created_at, :updated_at
    end
    
[/code]

これで設定したURLにアクセスすると以下の様な値を返してくれるようにはなりました。

[code]

    {"user":{"id":1,"email":"foo@example.com","created_at":"2015-01-23T19:23:14+09:00","updated_at":"2016-02-27T02:24:10+09:00"}}
    
[/code]

できればこの `"user"`部分を省き

[code]

    {"id":1,"email":"foo@example.com","created_at":"2015-01-23T19:23:14+09:00","updated_at":"2016-02-27T02:24:10+09:00"}
    
[/code]

を返したいのですがどうすればよいでしょうか？


CC BY-SA 3.0
2016-02-28T10:51:39.700
22634
2016-02-28T11:30:40.977
3271
question
ruby-on-rails api
ActiveModel::Serializer でモデル名を省略する方法


デフォルトのノードを表示させないためには`root: false`を指定する必要がありました。  
このような感じで。

[code]

    format.json { render json: @user, root: false }
    
[/code]

[英語版の該当記事](https://stackoverflow.com/questions/15350859/make-root-node-in-
active-model-serializer)


CC BY-SA 3.0
2016-02-28T11:30:40.977
22637
2016-02-28T11:30:40.977
2017-05-23T12:38:56.083
-1
3271
22634
answer