Railsの予約語はこんなにたくさん
今日はカラム名に(つまりモデルのattributeに)使ってはいけない単語を使ってしまい、時間をロスしてしまったのでメモしておきます。
一般にプログラミング言語には識別子(つまり変数などの名前)として使ってはいけない単語、”予約語”がありますね。英語では単にkeywordと言いますが。Ruby自体の予約語ももちろんありますが、Railsを使う場合にはRailsの予約語*1も意識する必要があるわけです。
調べてみたら本家のWikiにReservedWords in Ruby on Railsというページがありました。また、このページを元に完全な?予約語リストを作ったエントリもありました。
見てみると、つい使ってしまいそうな単語がちらほらありますね。例えば「Task」とかいうモデルはいかにもありそう。テーブルのカラムに使えないのは「connection」「format」「key」「session」「template」など。SQLの予約語も考えると「catalog」とか「group」も使えなくなるのか…。
これら予約語との衝突を避ける方法として挙げられているのが、適当なprefixを付ける方法です。たとえばプロジェクトの頭文字をつけるとか。まあ、無難ですね。