高木のブログ

【Rails / Sinatra】ID を UUID にする

2022/08/17

実際は Sinatra アプリでやった話だけど、Rails でもほとんど一緒だからタイトルに Rails を入れてる

ユーザーの ID を UUID にした時のメモ(デフォルトでは BigInt になっている)

手順

マイグレーションファイル

class CreateUsers < ActiveRecord::Migration[7.0]
  def change
    create_table :users, id: false do |t|
      t.string :id, null: false, primary_key: true
      t.string :name, null: false

      t.timestamps
    end
  end
end

モデル

class User < ActiveRecord::Base
  before_create -> { self.id = SecureRandom.uuid }
end

本来であれば被らない UUID が生成されるまでループした方が良さげだけど、被る確立は低そうなので端折った

参考

[Rails]idにuuid(乱数)


ytkg

Written by ytkg, Twitter, GitHub