環境
- Rails 5.2.3
- psql (PostgreSQL) 11.4
事象
- DBに登録したユーザーのレコードを取得するURLにアクセスした。
- 画像のとおり、No route matchesのエラーが表示された。
原因
テーブルの主キーの型をbigintからuuidに変更したのに、テーブルのcolumn name、routes.rbを修正しなかったため。
対応
①該当テーブルのcolumn nameをuuidに変更
class RenameHogeModelPrimaryKey < ActiveRecord::Migration[5.2]
def change
rename_column :hoges, :id, :uuid
end
end
②対応するモデルに主キーがuuidであることを記述
class Hoge < ApplicationRecord
self.primary_key = "uuid"
③routes.rbにてparamをidからuuidに変更した
resources :hoges, param: :uuid