概要

Rails6 で API モードを使って開発する場合にセッションやクッキーを使うことができるよう設定する方法を書いています。

いちばん簡単な方法

いろいろと設定を書き加えるのが面倒だという場合には config/application.rb を開いて 1 行書き換えるだけでできます。

class Application < Rails::Application
  # ...
  config.api_only = false
end

このようにすればセッションとクッキーのミドルウェアを読み込むようになり、使うこともできるようになります。
ですが、このやり方ではこの他にも views や assets などの API では使うことのないミドルウェアも一緒に読み込んでしまうようになります。

よって以下ではクッキーとセッションのみ読み込む方法を示します。

ミドルウェアの読み込み

さきほどと同じように config/application.rb を開き、以下のように追記します。

class Application < Rails::Application
  # ...
  config.api_only = true

  # この2行を追加する
  config.middleware.use ActionDispatch::Cookies
  config.middleware.use ActionDispatch::Session::CookieStore
end

コントローラーでのインクルード

そして、読み込んだミドルウェアをコントローラーで使用できるようにします。

app/controllers/application_controller.rb を開いて ActionController::Cookies をインクルードします。

class ApplicationController < ActionController::API
  include ActionController::Cookies
  # ...
end

これで完了です。