1
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?

記事投稿キャンペーン 「2024年!初アウトプットをしよう」

Railsのserializerの使い方や導入手順について再認識する

Last updated at Posted at 2024-01-25

最初に

私は、大学生であり、もう少しで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を追加してインストールする必要があります。

Gemfile
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ファイルにコードを記載していきます。

app/serializers/modelhoge_serializer.rb
class ModelhogeSerializer < ActiveModel::Serializer
+  attributes :id, :name, :email
end

user情報のカラムを例として、serializeします。

serializerファイルでは、どのカラムの情報レスポンスボディーに含めるか定義します。

したがって、上記のコードでは、id,name,emailカラムのみをレスポンスボディーに含めるように定義しました。

アソシエーションしてるデータをserializeする場合

app/serializers/modelhoge_serializer.rb
class ModelhogeSerializer < ActiveModel::Serializer
  attributes :id, :name, :email
+ has_many :content
end

次に、上記で定義したserializerをコントローラーに呼び出しをして行きます。

serializeの呼び出し

  • コントローラーで呼び出し

先ほど定義したserializerをコントローラーで呼び出す為に以下のようにコードを書いて行きます。

app/controllers/hoge_controller.rb
class HogeController < ApplicationController
  def show
    @model = Model.find(params[:id])
    render json: @model, serializer: ModelhogeSerializer
  end
end

上記によってModelHogeSerializerで定義したデータがJSON形式でレスポンスされるようになります。

参考

1
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
1
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?