0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Rails active_model_serializerとは

Posted at

#serializerとは
データを保存したり、ネットワークで送受信できるようにしたりするものです。

#active_model_serializerとは
RailsでAPIを叩いて開発する時、わかりやすいJSON形式にしてくれるものです。

⚫︎公式ドキュメントに概要や使い方が乗っています。
https://github.com/rails-api/active_model_serializers
⚫︎公式ドキュメント翻訳
https://qiita.com/ikamirin/items/be809c845f6104aa6f48#adapters

#active_model_serializerの導入

gem 'active_model_serializers', '~> 0.10.0'

を追記

$ bundle install

公式ドキュメントではbundle なのでbundleも可。

$ bundle exec rails g serializer Staff(モデル名)

上のコマンドを実行し、serializersディレクトリが作成されuser_serializer.rbが生成される。

staff_serializer.rb

class PostSerializer < ApplicationSerializer
  attributes :id
end

この中を開発したいものによってbelongs_toやhas_manyを入れていく。

例えば

staff_serializer.rb

class StaffSerializer < ApplicationSerializer
  attributes :id :name :account :email 
  belongs_to :office
end

みたいな感じです。

#名前空間を使った時
コントオーラーを作成した時ルーティングでapi/v1のような名前空間を定義した時
は下のようになります。

$ bundle exec rails g controller  api/v1/staffs index create show update destroy

api/v1/staffs_controller.rb

class Api::V1::StaffSerializer < ActiveModel::Serializer
  attributes :id, :name,:account, :email,
end

みたいにclassの後にApi::V1が追加されます。

api/v1/staffs_controller.rb

module Api::V1
class Api::V1::UsersController < ApplicationController
 #省略

  def index
    staffs = Staff.all
    render json: staffs
  end

#省略
end

みたいに使えます。
あくまで参考にお願いします。

⚫︎参考資料
https://qiita.com/onikan/items/d24ce08adf144c326812
https://qiita.com/ikamirin/items/be809c845f6104aa6f48
https://rooter.jp/programming/rails-activemodelserializers/
https://qiita.com/TeruhisaFukumoto/items/33dd278115efe6f1fa31
https://qiita.com/TeruhisaFukumoto/items/33dd278115efe6f1fa31

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?