RailsでTEXT型を越えるテキスト(MEDIUMTEXT/LOGTEXT)を扱う
はじめに
MySQL(MariaDB)にはTEXT型と呼ばれる65,535バイトまでの文字列を扱う型がございます。たいていのアプリはこちらを指定することで、ほとんどの文章を管理できるのではないかと思います。
しかしながら、少しリッチなブログなどを開発しようとすると、文字数の上限に物足りなさを感じるのではないでしょうか。そうなったときに利用したくなるのが、MEDIUMTEXT型やLONGTEXT型といった、より大きな型となります。
実装
RailsでMEDIUMTEXT型やLONGTEXT型を扱うには、DBのmigrationファイルにlimitオプションを指定することで実現できます。MEDIUMTEXTやLONGTEXTといった、型の名前を識別子としてファイルに記述することはありません。
上記の通り数値として値を渡す為、指定した数値によって、以下のレンジからMySQL上ではカラムの型が決定されます。
- TINYTEXT型: 1-255
- TEXT型: 256-65535
- MEDIUMTEXT型: 65536-16777215
- LONGTEXT型: 16777216-4294967295
以下はlimit: 16777215を指定した場合です。
MariaDB [foo_development]> show columns from posts;
+------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+-------+
| uuid | varchar(255) | NO | PRI | NULL | |
| body | mediumtext | NO | | NULL | |
ちゃんとデータベース側ではmediumtextとして指定されていることが確認できます。