RailsでIDの代わりにUUIDを利用する

はじめに

Railsでモデルを作成する場合、主キーとしてIDなるカラムが自動的に作成されます。このカラムは新しくリソースがcreateされるに応じて、インクリメントされていきます。

内部的に利用されるのみで、外部に露出しないシステムや、この値に対して特定の意味をもたせているシステムであれば、そのまま放置しても問題ないと思います。

しかしながら、そうでない場合、とりわけIDの値がユーザの目に触れるような場合は、UUIDに変更するべきでしょう。

実装

IDをUUIDに変更するには、マイグレーションファイルの修正に加えて、FriendlyIdというgemを利用します。Rails Style Guideがオススメしておりました。

https://github.com/norman/friendly_id

具体的にはマイグレーションファイルでIDを無効化の上、代わりにUUIDというカラムを追加。更にこれをIDとして外部から参照する為に、FriendlyIdによる指定を入れます。

これによってIDの代わりにUUIDでリソースにアクセスできるようになりました。

思い起こせばtwitterも、一時期はRailsのデフォルトのIDで運用がされておりましたね。今でもその時の名残を、以下のようなツイートから感じることができます。

IDをUUIDにすることで、サービスがどれだけ流行っていないか、隠すことができます。サービスのリリース当初こそ必須の対応ではないでしょうか。

Rails

Posted by poison