🐶

Rails 予約語について

2023/06/05に公開

はじめに

PF作成4日目のプログラミング初学者です🔰
今日はデータベース・詳細設計が終わって、大体の初期設定もできたので
明日から実装に入れそうです!

体調があまり良くないのもあってだいぶ休みながらやってたので
また切り替えて頑張らなければです💪🏻

今日はテーブルを作る際にたまたまカラム名にtypeという予約語を使ってしまって注意されました!
そういえばそういうのあったなと思ったので忘れぬよう残しておきます!

予約語とは

特定の語彙(ワード)がRuby言語やRailsフレームワーク内部で特別な意味を持っていたり、
自動的に使用される場合があります。
これらの語彙は「予約語」(reserved words)と呼ばれています。

これらの語句を変数名、メソッド名、クラス名などとして使用すると、
混乱やエラーを引き起こす可能性があります。

🌱カラム名としての予約語🌱

id: 主キーとして自動的に生成されるカラム名
created_at, updated_at: タイムスタンプとして自動的に生成されるカラム名
type: 単一テーブル継承(STI)のディスクリミネータとして使用されるカラム名
関連付け名_type: ポリモーフィック関連付けの種類を保存
lock_version: モデルにoptimistic lockingを追加
テーブル名_count: 関連付けにおいて、所属しているオブジェクトの数をキャッシュするのに使用
position: acts_as_listで自動的に使用されるカラム名
parent_id: 階層構造を持つデータの管理に使用

これらのカラム名はActive Recordで予約されているので、
特別な理由のない限り、同じカラム名の利用は避けるべきです!

もし予約語を無視して使用した場合、思わぬ挙動の原因となることがあります。

たとえば、typeという名前のカラムを作ろうとした場合、
Railsはそれを「Single Table Inheritance (STI)」のためのカラムだと認識しようとします。
これが意図しない動作を引き起こす可能性があります。

とのこと!
Ruby自体にも予約語があるので、モデル名やメソッド名を付ける際には注意が必要です!

https://railsguides.jp/active_record_basics.html#スキーマのルール

短いですが、今日はここまで!
おやすみなさい🌙

Discussion