created_at
や updated_at
はRailsといえば!ぐらいの代表的なカラム名だけど、 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などの各機能の説明は関連リンク参考のこと