最初に
私は、大学生であり、もう少しでWebエンジニアとしてのキャリアが始まる為、現在学習している内容などを投稿していきたいと思います。
serializerについて
serializerとは、RailsでAPIを作る際、データをJSON形式にわかりやすく変換して適切な制御できるgemの事です。
例えば、userのデータ情報がid
,name
,email
,created_at
,update_at
とあったとして、user情報をAPIから送る際に全ての情報を送るのは、セキュリティの面で問題となるので、userの全ての情報のうち、どの情報をレスポンスするのかを制御する為にserializerを導入します。
1. gemのインストールと設定
- gemインストール
Railsでserializerを扱う為には、Gemfileにgemを追加してインストールする必要があります。
gem 'active_model_serializers'
上記をGemfileに追記した後にgemをインストールします。
bundle install
これで、serializerのgemインストールは完了です。
2. serializerの生成
- serializerのファイルを生成する
serializerを生成する為に下記のコマンドを実行します。
※Modelhogeにはプロダクトに合ったモデル名を入れてください。
rails g serializer Modelhoge
コマンド実行後にapp/serializers/modelhoge_serializer.rb
ファイルが自動的に生成されます。
3. serializerの使い方
- 基本的な設定
serializernの設定をする為に、app/serializers/modelhoge_serializer.rb
ファイルにコードを記載していきます。
class ModelhogeSerializer < ActiveModel::Serializer
+ attributes :id, :name, :email
end
user情報のカラムを例として、serializeします。
serializerファイルでは、どのカラムの情報レスポンスボディーに含めるか定義します。
したがって、上記のコードでは、id
,name
,email
カラムのみをレスポンスボディーに含めるように定義しました。
アソシエーションしてるデータをserializeする場合
class ModelhogeSerializer < ActiveModel::Serializer
attributes :id, :name, :email
+ has_many :content
end
次に、上記で定義したserializerをコントローラーに呼び出しをして行きます。
serializeの呼び出し
- コントローラーで呼び出し
先ほど定義したserializerをコントローラーで呼び出す為に以下のようにコードを書いて行きます。
class HogeController < ApplicationController
def show
@model = Model.find(params[:id])
render json: @model, serializer: ModelhogeSerializer
end
end
上記によってModelHogeSerializerで定義したデータがJSON形式でレスポンスされるようになります。
参考