コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

Railsが利用するテーブルでなるべく避けるべきカラム名

created_atupdated_atRailsといえば!ぐらいの代表的なカラム名だけど、 type とかは感覚的な理解だったので、そういえばActiveRecord的につけてはいけないカラム名とはどういうものがあるのかと思って調べてみたメモ

環境

rails (5.2.0)

避けるべきカラム名

Railsガイドから要約すると以下のもの

カラム名 用途
id 主キーとして使われるカラム
テーブル名の単数形_id リレーションを表現するために使われるカラム
created_at レコードの作成日時が自動更新されるカラム
updated_at レコードの更新日時が自動更新されるカラム
type STI(Single Table Inheritance) を利用する場合に使うカラム
xxx_type ポリモーフィック関連を利用する際のカラム
lock_version 楽観的ロック(Optimistic Locking)を実現するためのカラム

Railsガイドにも記載があるのですが

これらのカラム名は必須ではありませんが、Active Recordに予約されています。特殊なことをするのでなければ、これらの予約済みカラム名の使用は避けてください。たとえば、typeという語はテーブルでSingle Table Inheritance (STI)を指定するために予約されています。STIを使用しないとしても、予約語より先にまず"context"などのような、モデルのデータを適切に表す語を検討してください。

という風に無理くり使うことはできるが意図と外れてくるので利用は非推奨なものになります。

※ちなみにSTIなどの各機能の説明は関連リンク参考のこと

関連リンク